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

时间:2012-03-19 20:02:37

标签: javascript database ms-access activex ado

首先我想提一下,我知道在与数据库的网络交互中应该是 由于安全原因以及javascript
这一事实,总是使用服务器端语言 因为它不提供和与Windows文件系统兼容。

说我正面临一种情况,我正在努力创造性思考 我不允许任何访问服务器端脚本和SQL。

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

到目前为止,我找到了2个解决方案,但它们都没有足够的文档供我正确使用。

一个是名为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)。

感谢您阅读此内容!我非常感谢你的帮助!

杰克

2 个答案:

答案 0 :(得分:4)

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

其次,这是删除命令的一个版本:

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();
}  

请注意,我没有测试过这个(现在没有Access),所以可能有一些 语法错误...

希望它有效并有所帮助。

答案 1 :(得分:-1)

    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();
}