LAST_INSERT_ID
जैसा आपने वर्णन किया है वैसा ही व्यवहार करेगा, लेकिन इसके अंत में अर्धविराम शामिल नहीं करने के कारण पिछले सम्मिलन कथन में आपके पास एक असंबंधित त्रुटि है। MySQL में सिंटैक्स त्रुटियों का निदान करते समय, त्रुटि संदेश में निहित SQL स्ट्रिंग आमतौर पर सिंटैक्स त्रुटि के तुरंत बाद होती है।
पठनीयता के लिए अपने कथनों को पुनर्व्यवस्थित करने पर विचार करें, ताकि आप इस तरह की वाक्य रचना त्रुटियों को अधिक आसानी से पहचान सकें। उदाहरण के लिए:
public void Insert(TUser member)
{
string sql = @"
Insert into users
(UserName, PasswordHash, SecurityStamp, Email, EmailConfirmed, PhoneNumber, PhoneNumberConfirmed, AccessFailedCount, LockoutEnabled, LockoutEndDateUtc, TwoFactorEnabled)
values
(@name, @pwdHash, @SecStamp, @email, @emailconfirmed, @phonenumber, @phonenumberconfirmed, @accesscount, @lockoutenabled, @lockoutenddate, @twofactorenabled);
select LAST_INSERT_ID();
";
member.Id = db.Connection.ExecuteScalar<int>(sql, new
{
name = member.UserName,
pwdHash = member.PasswordHash,
SecStamp = member.SecurityStamp,
email = member.Email,
emailconfirmed = member.EmailConfirmed,
phonenumber = member.PhoneNumber,
phonenumberconfirmed = member.PhoneNumberConfirmed,
accesscount = member.AccessFailedCount,
lockoutenabled = member.LockoutEnabled,
lockoutenddate = member.LockoutEndDateUtc,
twofactorenabled = member.TwoFactorEnabled
});
}
प्रति यह उत्तर
, आप LAST_INSERT_ID
. पर कास्ट को निकालने में भी सक्षम हो सकते हैं यदि आप हाल ही का MySQL संस्करण चला रहे हैं।