javascript连接access数据库例子

作者:great_domino 的 Blog
文件构成:
  Access数据库名为 MyData.Mdb, 里面建了一个名为count的表,表由两个
  字段组成: ID和COUNT,表里有一条数据: (''''count'''',''''100'''')。
  文本文件名为 count.txt,里面随便写入一个数字。
  静态页面名为Cnt.htm。
以上3个文件都放在同一目录下。

    由于采用Access数据库,而它采用非标准SQL语法,所以要注意在表名
和字段名上需要加方括号: []

下面是页面里的代码:

    其中getCountFromDB方法是对Access数据库进行操作,getCountFromTxt
方法是对txt纯文本进行操作,这两个方法都在本地执行通过。

<!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="JavaScript">
<!--
function getCountFromDB() {
    //以当前页面文件为基础,找到文件所在的绝对路径。
    var filePath = location.href.substring(0, location.href.indexOf("Cnt.htm"));
    var path = filePath + "MyData.mdb";
    //去掉字符串中最前面的"files://"这8个字符。
    path = path.substring(8);
    var updateCnt = 0;

    //生成查询和更新用的sql语句。
    var sqlSelCnt = "SELECT COUNT FROM [COUNT] WHERE ID = ''''count''''";
    var sqlUpdCnt = "UPDATE [COUNT] SET [COUNT] = ''''";

    //建立连接,并生成相关字符串 http://www.zhangpeng.com.cn/
    var con = new ActiveXObject("ADODB.Connection");
    con.Provider = "Microsoft.Jet.OLEDB.4.0";
    con.ConnectionString = "Data Source=" + path;

    con.open;
    var rs = new ActiveXObject("ADODB.Recordset");
    rs.open(sqlSelCnt, con);
    while (!rs.eof) {
        var cnt = rs.Fields("COUNT");
        document.write(cnt);
        //将取得结果加1后更新数据库。
        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 = eval(s) + 1;
    document.write("now count is :" + s);
    ts.Close();

    ts = f1.OpenAsTextStream(ForWriting, true);
    ts.WriteLine(nextCnt);
    ts.close();
}
//-->
</SCRIPT>
</HEAD>

<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
getCountFromTxt();
//-->
</SCRIPT>
</BODY>
</HTML>

补充:
ajaxpro使用(
http://blog.sina.com.cn/s/blog_50761d850100b3m3.html
AjaxPro 返回 DataSet/DataTable/DataView 如何呈现?

[code=JSscript]
// js

    <script type="text/javascript">

    function GetProductData()

    {

        var cb = function(res) {

            if(res.error) return alert("发生错误\n" + res.error.Message);

            //debugger;

            //alert(res);

            var ds = res.value;

            var tbl = ds.Tables[0];

            var tblHtml = " <table border=1>";

         

            // 表头

            tblHtml += " <tr>";

            for(var j = 0; j < tbl.Columns.length; j++) {

                tblHtml += " <th>" + tbl.Columns[j].Name + " </th>";

            }

            tblHtml += " </tr>";

         

            // 数据

            for(var i = 0; i < tbl.Rows.length; i++) {

                tblHtml += " <tr>";

                for(var j = 0; j < tbl.Columns.length; j++) {

                    tblHtml += " <td>" + tbl.Rows[i][tbl.Columns[j].Name] + " </td>";

                }

                tblHtml += " </tr>";

            }

            tblHtml += " </table>";

            var divPro = document.getElementById("divPro");

            divPro.innerHTML = tblHtml;

        }

        AjaxProSample.GetProductSet(cb);     

    }

    </script>

[/code]
C# code
 
   
// .aspx.cs [AjaxPro.AjaxNamespace( " AjaxProSample " )] public partial class AjaxPro_ReturnDataSet : System.Web.UI.Page { protected void Page_Load( object sender, EventArgs e) { AjaxPro.Utility.RegisterTypeForAjax( typeof (AjaxPro_ReturnDataSet)); } [AjaxPro.AjaxMethod] public static DataSet GetProductSet() { return CreateSampleProductSet(); } sample data #region sample data static DataSet CreateSampleProductSet() { DataSet ds = new DataSet(); ds.Tables.Add(CreateSampleProductData()); return ds; } static DataTable CreateSampleProductData() { DataTable tbl = new DataTable( " Products " ); tbl.Columns.Add( " ProductID " , typeof ( int )); tbl.Columns.Add( " ProductName " , typeof ( string )); tbl.Columns.Add( " UnitPrice " , typeof ( decimal )); tbl.Columns.Add( " CategoryID " , typeof ( int )); tbl.Rows.Add( 1 , " Chai " , 18 , 1 ); tbl.Rows.Add( 2 , " Chang " , 19 , 1 ); tbl.Rows.Add( 3 , " Aniseed Syrup " , 10 , 2 ); tbl.Rows.Add( 4 , " Chef Anton's Cajun Seasoning " , 22 , 2 ); tbl.Rows.Add( 5 , " Chef Anton's Gumbo Mix " , 21.35 , 2 ); tbl.Rows.Add( 47 , " Zaanse koeken " , 9.5 , 3 ); tbl.Rows.Add( 48 , " Chocolade " , 12.75 , 3 ); tbl.Rows.Add( 49 , " Maxilaku " , 20 , 3 ); return tbl; } #endregion } AjaxPro 支持直接返回 DataTable 和 DataView ,客户端读取方式同 DataSet var tbl = res.value; // 直接访问 DataTable 需要注意的是,返回 DataView,实际上是返回 DataView 关联的 DataTable 。

转载于:https://www.cnblogs.com/zhangbinghe/archive/2009/08/07/1540897.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值