|
Access數(shù)據(jù)庫名為 MyData.Mdb, 里面建了一個(gè)名為count的表,表由兩個(gè)字段組成: ID和COUNT,表里有一條數(shù)據(jù): ('count','100')。 文本文件名為 count.txt,里面隨便寫入一個(gè)數(shù)字。 靜態(tài)頁面名為Cnt.htm。 以上3個(gè)文件都放在同一目錄下。 由于采用Access數(shù)據(jù)庫,而它采用非標(biāo)準(zhǔn)SQL語法,所以要注意在表名和字段名上需要加方括號(hào): [] 下面是頁面里的代碼: 其中g(shù)etCountFromDB方法是對(duì)Access數(shù)據(jù)庫進(jìn)行操作,getCountFromTxt方法是對(duì)txt純文本進(jìn)行操作,這兩個(gè)方法都在本地執(zhí)行通過。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> <SCRIPT LANGUAGE="JavaS <!-- function getCountFromDB() { //以當(dāng)前頁面文件為基礎(chǔ),找到文件所在的絕對(duì)路徑。 var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm")); var path = filePath + "MyData.mdb"; //去掉字符串中最前面的"files://"這8個(gè)字符。 path = path.substring(8); var updateCnt = 0; //生成查詢和更新用的sql語句。 var sqlSelCnt = "SELECT COUNT FROM [COUNT] WHERE ID = 'count'"; var sqlUpdCnt = "UPDATE [COUNT] SET [COUNT] = '"; //建立連接,并生成相關(guān)字符串 www.。 var con = new ActiveXObject("ADODB.Connection"); con.Provider = "Microsoft.Jet.OLEDB.4.0"; con.ConnectionString = "Da con.open; var rs = new ActiveXObject("ADODB.Recordset"); rs.open(sqlSelCnt, con); while (!rs.eof) { var cnt = rs.Fields("COUNT"); document.write(cnt); //將取得結(jié)果加1后更新數(shù)據(jù)庫。 updateCnt = cnt * 1 + 1; rs.moveNext; } rs.close(); rs = null; sqlUpdCnt = sqlUpdCnt + updateCnt + "'"; con.execute(sqlUpdCnt); con.close(); con = null; } function getCountFromTxt() { var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm")); var path = filePath + "count.txt"; path = path.substring(8); var nextCnt = 0; var fso, f1, ts, s; //以只讀方式打開文本文件。 var ForReading = 1; //以讀寫方式打開文本文件。 var ForWriting = 2; fso = new ActiveXObject("Scripting.FileSystemObject"); f1 = fso.GetFile(path); ts = f1.OpenAsTextStream(ForReading, true); s = ts.ReadLine(); nextCnt = ev document.write("now count is :" + s); ts.Close(); ts = f1.OpenAsTextStream(ForWriting, true); ts.WriteLine(nextCnt); ts.close(); } //--> </SCRIPT> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaS <!-- getCountFromTxt(); //--> </SCRIPT> </BODY> </HTML> 后記:雖然在只支持靜態(tài)頁面的免費(fèi)空間不可用,但是我想一些支持Asp的免費(fèi)空間應(yīng)該能用,當(dāng)然我沒有具體試過,只是憑自己想象。并且用這種方法來讀寫數(shù)據(jù)庫,只適合做計(jì)數(shù)器和留言版這樣的不需要保密性的工作,畢竟代碼全是用javas 收集:
簡(jiǎn)單的數(shù)據(jù)庫操作: <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> <TITLE></TITLE> <script language=javas function connectDb() { var ConnDB = new ActiveXObject("ADODB.Connection"); ConnDB.ConnectionString="dsn=shbxdatabase;uid=ldbx;pwd=123456;"; ConnDB.Open(); var Rs = new ActiveXObject("ADODB.Recordset"); var tempstr=""; Rs.Open("select * from WDA1",ConnDB,1,3); while(!Rs.EOF) { tempstr = tempstr + Rs("TNAME") + "<br/>"; Rs.MoveNext; } test.innerHTML=tempstr; } </script> </HEAD> <BODY on <P><div id=test> </div> <P><INPUT id=button1 type=button value=顯示 name=button1 on </BODY> </HTML> >>>>>>------------------------------------- var db="D:\\js\\9t\\db1.mdb"; function opendb(dbname,sql) { var opendb =new ActiveXObject("ADODB.Recordset") opendb.ActiveConnection = "DBQ="+dbname+";DRIVER={Microsoft Access Driver (*.mdb)};" opendb.Source = sql opendb.CursorType = 1 opendb.CursorLocation = 2 opendb.LockType = 3 opendb.Open() return opendb } var rs=new Object(); rs=opendb(db,"select * from 產(chǎn)品 where id="+i); document.all.xx1.innerHTML=rs("生產(chǎn)廠商").value; document.all.xx2.innerHTML=rs("產(chǎn)品名稱")+"/"+rs("型號(hào)"); document.all.xx3.innerHTML=rs("售價(jià)"); document.all.xx4.innerHTML=rs("批發(fā)"); document.all.xx5.innerHTML=rs("備注"); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<--------------------------------------- 連接ACCESS只能用數(shù)據(jù)源,操作數(shù)據(jù)庫的方法跟ASP之類是一樣的。 只不過執(zhí)行的語句不一樣罷了。 如: String dbUrl = "sun.jdbc.odbc.JdbcOdbcDriver"; String dbConStr = "jdbc:odbc:dnsName"; Connection Conn = null; Statement stmt = null; try{ Class.forName(dbUrl); }catch(ClassNotFoundException e){ System.err.println("Not Found ClassForName" + e.getMessage()); } try{ Conn = DriverManager.getConnection(dbConStr, "uid", "pwd"); //連接數(shù)據(jù)庫,uid與pwd分別為 用戶名及密碼(連接數(shù)據(jù)庫的),如果沒有既為空 stmt = Conn.createStatement(); }catch(Exception e){ System.err.println("Can't Connect the DA } //以下為操作數(shù)據(jù)庫的 String sql = "select * from tableName[....]"; ResultSet Rs = stmt.executeQuery(sql); // 返回記錄集 String sqlUpdate = "update..."; String sqlInsert = "insert into...."; stmt.executeUpdate(sqlUpdate); //更新記錄 stmt.executeUpdate(sqlInsert); //插入記錄 Conn.close(); stmt.close(); Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1496900 簡(jiǎn)單的數(shù)據(jù)庫操作: <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> <TITLE></TITLE> <script language=javas function connectDb() { var ConnDB = new ActiveXObject("ADODB.Connection"); ConnDB.ConnectionString="dsn=shbxdatabase;uid=ldbx;pwd=123456;"; ConnDB.Open(); var Rs = new ActiveXObject("ADODB.Recordset"); var tempstr=""; Rs.Open("select * from WDA1",ConnDB,1,3); while(!Rs.EOF) { tempstr = tempstr + Rs("TNAME") + "<br/>"; Rs.MoveNext; } test.innerHTML=tempstr; } </script> </HEAD> <BODY on <P><div id=test> </div> <P><INPUT id=button1 type=button value=顯示 name=button1 on </BODY> </HTML> >>>>>>------------------------------------- var db="D:\\js\\9t\\db1.mdb"; function opendb(dbname,sql) { var opendb =new ActiveXObject("ADODB.Recordset") opendb.ActiveConnection = "DBQ="+dbname+";DRIVER={Microsoft Access Driver (*.mdb)};" opendb.Source = sql opendb.CursorType = 1 opendb.CursorLocation = 2 opendb.LockType = 3 opendb.Open() return opendb } var rs=new Object(); rs=opendb(db,"select * from 產(chǎn)品 where id="+i); document.all.xx1.innerHTML=rs("生產(chǎn)廠商").value; document.all.xx2.innerHTML=rs("產(chǎn)品名稱")+"/"+rs("型號(hào)"); document.all.xx3.innerHTML=rs("售價(jià)"); document.all.xx4.innerHTML=rs("批發(fā)"); document.all.xx5.innerHTML=rs("備注"); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<--------------------------------------- 連接ACCESS只能用數(shù)據(jù)源,操作數(shù)據(jù)庫的方法跟ASP之類是一樣的。 只不過執(zhí)行的語句不一樣罷了。 如: String dbUrl = "sun.jdbc.odbc.JdbcOdbcDriver"; String dbConStr = "jdbc:odbc:dnsName"; Connection Conn = null; Statement stmt = null; try{ Class.forName(dbUrl); }catch(ClassNotFoundException e){ System.err.println("Not Found ClassForName" + e.getMessage()); } try{ Conn = DriverManager.getConnection(dbConStr, "uid", "pwd"); //連接數(shù)據(jù)庫,uid與pwd分別為 用戶名及密碼(連接數(shù)據(jù)庫的),如果沒有既為空 stmt = Conn.createStatement(); }catch(Exception e){ System.err.println("Can't Connect the DA } //以下為操作數(shù)據(jù)庫的 String sql = "select * from tableName[....]"; ResultSet Rs = stmt.executeQuery(sql); // 返回記錄集 String sqlUpdate = "update..."; String sqlInsert = "insert into...."; stmt.executeUpdate(sqlUpdate); //更新記錄 stmt.executeUpdate(sqlInsert); //插入記錄 Conn.close(); stmt.close(); 以上就是簡(jiǎn)單的數(shù)據(jù)庫操作! |
|
|