Получить значение вставленного идентификатора из таблицы SQL в Javascript - PullRequest
0 голосов
/ 18 июня 2019

Я должен сделать оператор вставки в таблицу БД, используя Javascript. Операторы SQL создаются ActiveXObject и методом open. Проблема здесь в том, что метод open не возвращает значение id, которое база данных дала первичному ключу таблицы. Ниже вы можете увидеть, что я пытаюсь в том же операторе SQL вставить данные и в то же время я пытаюсь получить идентификатор, используя идентификатор @@. «Проект» предназначен только для академических целей! Я могу понять дыру в этом пути!

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 голосов
/ 21 июня 2019

@ JordanRieger В данном случае речь идет только о SPA для разработки, работающей в IE. Таким образом, Jscript, который работает в одном файле с Html, подключается к БД. Как вы полностью понимаете, javascript получает значения из DOM через document.getElementById! Теперь проблема в моем случае была, когда мне нужно было сделать оператор вставки и вернуть идентификатор строки таблицы. Проблема заключалась в том, что я пытался из того же соединения (я должен был из-за RDBMS) сделать 2 SQL-заявления один для вставки и один для идентификатора Select @@. Реакция СУБД на описанную выше ситуацию заключается в отправке вам двух строк сообщений: одна для вставки (то есть влияет на 1 строку), а другая - для выбора метки. Но "rs = new ActiveXObject (" ADODB.Recordset ")" ожидает только одного ответа (не для данных - но для сообщений) Поэтому мне пришлось вставить в запросе SQL оператор «set nocount on», чтобы избежать появления сообщений. Я думаю, что это может быть полезно, когда мы используем наборы данных с нативным SQL! В любом случае, ребята, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...