我正在Delphi中開發一個應用程序,並希望將記錄插入到Mysql的表中。 然後我想知道插入的記錄的身份值。所以我寫了下面的代碼。
在運行時,插入完成並添加記錄,但返回的身份值爲零! 我的錯誤是什麼?delphi dxExpress MySQL:無效LAST_INSERT_ID值
-- MySql table create
CREATE TABLE Sample_Table (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
mobile_number varchar(20) DEFAULT NULL,
message_body text,
PRIMARY KEY (id)
);
--- Delphi code
SQLCon := TSQLConnection.Create(self);
with SQLCon do begin
Close;
DriverName := 'MySQL';
GetDriverFunc := 'getSQLDriverMYSQL';
LibraryName := 'dbxmys.dll';
VendorLib := 'LIBMYSQL.dll';
LoginPrompt := false;
Params.Values['HostName'] := '127.0.0.1';
Params.Values['Database'] := 'sms_test';
Params.Values['User_Name'] := 'root';
Params.Values['Password'] := 'root';
Open;
end;
SQLQry := TSQLQuery.Create(self);
with SQLQry do begin
Close;
SQLConnection := SQLCon;
SQL.Clear;
SQL.Add('INSERT INTO Sample_Table ');
SQL.Add('(mobile_number, message_body) VALUES');
SQL.Add(format('(%s, %s);',[QuotedStr('989121011689'), QuotedStr('Text1')]));
ExecSQL();
Close;
SQL.Clear;
SQL.Add('SELECT LAST_INSERT_ID() EngineRefNo;');
Open;
First;
ListBox1.items.Add(FieldByName('EngineRefNo').AsString);
Close;
end;
SQLCon.Close;
有什麼建議嗎?
我測試了上面的代碼,並返回null(自然應該返回null,如上面的請求)。現在,我怎樣才能得到最後插入的記錄的ID? –
@MohTarvirdi:您必須將sql_auto_is_null標誌設置爲1.更多信息請參見此處:http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_sql_auto_is_null – whosrdaddy