0

私は少し問題にぶつかっています、そして私はそこに誰かが助けてくれることを望んでいます。

他のテーブルの他の行とFK結合を実行できるように、挿入されたばかりのdbレコードのIDを取得する必要があります。

CREATE TABLE IF NOT EXISTS [Jobs] ( "ID" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "SourceID" guid,"Version" integer DEFAULT 0, "IsActive" bit DEFAULT 1, "LastUpdated" datetime DEFAULT (CURRENT_TIMESTAMP), "JobGPSLocation" nvarchar(100) COLLATE NOCASE)


    Job.prototype.Insert = function () {
        "use strict";
        try {
            console.log('Started: Job.prototype.Insert');
            console.log('ID of item been inserted ' + this.SourceID);
            var sqlcmd = 'INSERT INTO Jobs(ID,';
            sqlcmd += 'SourceID,';
sqlcmd += 'JobGPSLocation,';
            sqlcmd += 'IsActive , LastUpdated, Version) VALUES ';
            sqlcmd += '(NULL,';
            sqlcmd += '"' + this.SourceID + '",';
            sqlcmd += '"' + MakeDBSafe(this.JobGPSLocation) + '",';
            sqlcmd += this.IsActive + ',';
            sqlcmd += '"' + DateToSqlite(this.LastUpdated) + '",';
            sqlcmd += this.Version;
            sqlcmd += ')';
            console.log('B4 ClientDB.Transaction ' + sqlcmd);
            if ((ClientDB !== null) && (loggeduser !== null)) {
                var tempobj = this;
                ClientDB.transaction(function (tx) { JobInsert(tx, sqlcmd, tempobj); }, JobprototypeInsertErrorHandler);
            }
            else {
                console.log('Error: Job.prototype.Insert -- ClientDB And/Or loggeduser is null');
            }
        }
        catch (e) {
            console.log('Error: Engineer.prototype.Insert' + e);
        }
        function JobInsert(tx, sqlcmd, objref) {
            console.log('Started: JobInsert');
            console.log(sqlcmd);
            tx.executeSql(sqlcmd, [],
            function (transaction, results) {
                objref.ID = results.insertId;
                console.log('JobInsert insertId ' + results.insertId);
                console.log('JobInsert rowAffected ' + results.rowAffected);
                console.log('JobInsert rows ' + results.rows);
                console.log('JobInsert rows count ' + results.rows.length);

                for (var i = 0; i < results.rows.length; i++) {
                    for (prop in results.rows) {
                        str += prop + " value :" + obj[prop] + "\n"; //Concate prop and its value from object
                    }
                }

            }, JobprototypeInsertErrorHandler);
            console.log('Finished: JobInsert');
            console.log('JobInsert ID after insert ' + objref.ID);
        }
        var JobprototypeInsertErrorHandler = function (transaction, error) {
            console.log('JobprototypeInsertErrorHandler -- ' + error);
        };
    };

しかし、上記のコードは常に

JobInsertinsertId未定義

どんな助けでもいただければ幸いです

前もって感謝します

Lmac

4

1 に答える 1

0

別のSQLステートメントを呼び出して、挿入直後に最大IDを取得しました。これは、最も望ましい方法ではなく、動作させる唯一の方法です。

于 2012-04-12T07:32:17.993 に答える