我必须使用Java脚本对db表进行插入语句。 SQL语句由ActiveXObject和open方法组成。 这里的问题是,open方法不会将数据库提供给表的主键的id值返回。 在下面您可以看到我尝试在同一SQL语句中插入数据 并且同时我尝试使用@@ identity检索ID。 “项目”仅用于学术目的!我能理解这种方式的漏洞!
var connection = new ActiveXObject("ADODB.Connection") ;
var connectionstring="MyConnection";
connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");
var qry = " BEGIN TRAN T1 insert into myTable (docname,date) values ("+document.getElementById('docname').value+",'"+today.toISOString().substring(0, 10)+"') ";
qry = qry + 'select @@IDENTITY as id ';
alert(qry);
rs.Open(qry, connection);
rs.MoveFirst
var docid = rs.fields(0)
alert(docid);
rs.close;
connection.close;
//notice that the Mytable has 3 col,the ID, docname and date
答案 0 :(得分:0)
@JordanRieger该案例仅是在IE上运行的搜索-开发SPA。因此,在与HTML相同的文件上运行的Jscript连接到数据库。您完全了解javascript可以通过document.getElementById从DOM中获取值! 现在我的问题是,当我不得不做出一条插入语句并取回表行的ID时。 那里的问题是我尝试从同一连接(由于RDBMS而不得不这样做)使2条sql语句分别用于插入,一条用于Select @@ identity。 RDBMS对上述情况的响应是将两行消息发回给您,其中一行用于插入(即1行效果),另一行用于选择稳定。 但是“ rs = new ActiveXObject(“ ADODB.Recordset”)“仅等待一次响应(不用于数据-而是用于消息) 因此,我不得不在SQL查询中插入“ set nocount on”语句,以避免出现消息。 我认为这通常在我们将数据集与本机sql一起使用时可能有用! 谢谢你们!