使用Javascript读取和写入访问数据库

Read and write to an access database using Javascript

本文关键字:访问 数据库 Javascript 读取 使用      更新时间:2023-09-26

首先我想提到的是,我知道在web中与数据库的交互应该
由于安全原因以及javascript
as is不提供与windows文件系统的兼容性。

也就是说,我面临着一个艰难的处境,我正在努力创造性地思考
我不允许访问服务器端的脚本和SQL。

我需要为内部网创建一个基于客户端的应用程序,该应用程序将能够随着时间的推移存储数据。

到目前为止,我已经找到了两个解决方案,但没有一个有足够的文档供我正确使用。

一个是名为ACCESSdb的javascript库,可以在这里找到:ACCESSdb
不幸的是,我不知道如何使用它来写入或读取数据库中的数据。。。

另一个是这3段代码:

添加记录:

function AddRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoRS = new ActiveXObject("ADODB.Recordset");
adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='/'dbName.mdb'");
adoRS.Open("Select * From tblName", adoConn, 1, 3);
adoRS.AddNew;
adoRS.Fields("FieldName").value = "Quentin";
adoRS.Update;
adoRS.Close();
adoConn.Close();
}  

删除记录:

function DeleteRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoRS = new ActiveXObject("ADODB.Recordset");
adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='''dbName.mdb'");
adoRS.Open("Select * From tblName Where FieldName = 'Quentin'", adoConn, 1, 3);
adoRS.Delete;
adoRS.Delete;
adoRS.Close();
adoConn.Close();
}  

编辑记录:

function EditRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoRS = new ActiveXObject("ADODB.Recordset");
adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='''dbName.mdb'");
adoRS.Open("Select * From tblName Where FieldName = 'Quentin'", adoConn, 1, 3);
adoRS.Edit;
adoRS.Fields("FieldName").value = "New Name";
adoRS.Update;
adoRS.Close();
adoConn.Close();
}  

其中只有添加新记录出于某种原因对我有效
我还发现,要读取第一行中任何单元格的值,我所要做的就是写:

alert(adoRS(cellNum));  

但是如何获取后面几行中单元格的值呢?比方说(第3行,单元格5)。

谢谢你读到这里!我会非常感谢你的帮助!

Jake

首先,确保'/'''和''''(在连接字符串中)只是SO中的一个拼写错误。

其次,这里是Delete命令的一个版本:

function DeleteRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoCmd = new ActiveXObject("ADODB.Command");
adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='''dbName.mdb'");
adoCmd.ActiveConnection = adoConn;
adoCmd.CommandText = "Delete * From tblName Where FieldName = 'Quentin'";
adoCmd.Execute();
adoConn.Close();
}

并且,编辑命令(不循环->更新所有[匹配]记录):

function EditRecord() {
var adoConn = new ActiveXObject("ADODB.Connection");
var adoCmd = new ActiveXObject("ADODB.Command");
adoConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='''dbName.mdb'");
adoCmd.ActiveConnection = adoConn;
adoCmd.CommandText = "Update tblName Set FieldName = 'New Value' Where FieldName = 'Quentin'";
adoCmd.Execute();
adoConn.Close();
}  

请注意,我尚未对此进行测试(目前没有访问权限),因此可能存在一些语法错误。。。

希望它能起作用并有所帮助。

    function loadDB() {
    var connection = new ActiveXObject("ADODB.Connection");
    var connectionstring = "Data Source=.;Initial Catalog=EmpDetail;Persist Security Info=True;User ID=sa;Password=Micr0s0ft;Provider=SQLOLEDB";
    connection.Open(connectionstring);
    var rs = new ActiveXObject("ADODB.Recordset");
    rs.Open("select * from emp", connection);
    rs.MoveFirst();
    var span = document.createElement("span");
    span.style.color = "Blue";
    span.innerText = "  ID " + "  Name " + "   Salary";
    document.body.appendChild(span);
    while (!rs.eof){
        var span = document.createElement("span");
        span.style.color = "green";
        span.innerText = "'n " + rs.fields(0) + " |  " + rs.fields(1) + " |  " + rs.fields(2);
        document.body.appendChild(span);
        rs.MoveNext();
    }
    rs.close();
    connection.close();
}