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

Jak*_*ake 12 javascript database ms-access activex ado

首先,我想提一下,我知道在与数据库的Web交互中,
由于安全原因应该始终使用服务器端语言,并且因为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();
}  
Run Code Online (Sandbox Code Playgroud)

删除记录:

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();
}  
Run Code Online (Sandbox Code Playgroud)

编辑记录:

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();
}  
Run Code Online (Sandbox Code Playgroud)

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

alert(adoRS(cellNum));  
Run Code Online (Sandbox Code Playgroud)

但是如何在后面的行中获取单元格的值?让我们说(第3行,单元格5).

感谢您阅读这篇文章!我非常感谢你的帮助!

可靠的人

Igo*_*man 5

首先,确保 '/\' 和 '\'(在连接字符串中)只是 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();
}
Run Code Online (Sandbox Code Playgroud)

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

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();
}  
Run Code Online (Sandbox Code Playgroud)

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

希望它有效并有所帮助。