从SQL表获取插入的ID值到Javascript

时间:2019-06-18 17:57:36

标签: javascript sql sql-server internet-explorer

我必须使用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

1 个答案:

答案 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一起使用时可能有用! 谢谢你们!