2016-03-30 16 views
0

Bir MySQL veritabanına kablolu bir VB.NET TableAdapter Insert sorgusunda Last_Insert_Id kullanarak bir sorun yaşıyorum. Bu sitede ve Last_Insert_ID ve Scope_Identity ile ilgili diğer yayınlarda okuduğum pek çok yazı okudum. Bunların hiçbiri benim durumumda çalışmadı.Last_Insert_Id, MySQL ile TableAdapter kullanarak sorunlar

Biraz arka plan, iki tablo var, biri giriş bilgilerini (Otomatik oluşturulan ID, kullanıcı adı, şifre) tutar. Başka bir tablo kimlik değerleri üzerinde yabancı bir anahtar ilişkisine sahiptir ve kimlik, ad, soyadı, şehir, eyalet içerir.

: Benim TableAdapter olarak

İlk tabloya değerleri ekler ve bir takın İşte

masanın 2. yapılabilir, böylece kimlik değeri döndürmek için beklenen bir takın sorgusu var benim Sorgu olduğunu

INSERT INTO user_logins (user_login, user_pass) 
VALUES (@p1, @p2) 
Ben sorgu bağımsız olarak yalnızca kimlik ne olduğu, 1 değerini döndürür Ancak

INSERT INTO user_logins (user_login, user_pass) 
VALUES (@p1, @p2) 
SELECT LAST_INSERT_ID(); 

yapmak Last_Insert_Id eklemek istedim. Sorgu Oluşturucusu'nu açarsam, "Sorgu metnini ayrıştırılamıyor" ifadesini içeren bir ileti alıyorum. ExecuteMode'u Scalar olarak değiştirmeyi denedim, ancak bu da işe yaramadı.

Geçiş bölümü, yalnızca ekleme işleminden sonra kimlik değerini geri alabiliyor olsaydı mükemmel şekilde çalışıyor.

Denemek istediğim bir şey, ya da alternatif olarak, bunu başarmanın daha iyi bir yolu olan var mı?

Teşekkürler!

cevap

0

SELECT LAST_INSERT_ID() işlevini kullanmanıza bile gerek yoktur; sadece user_logins (USER_LOGIN, user_pass) DEĞERLER (@ p1, p2 @) Ben terk sona erdi Eğer iki yol

Dim t As Integer 
cmd.ExecuteNonQuery() 
t = (Int32) cmd.LastInsertedId 

VEYA

t = Convert.ToInt32(cmd.ExecuteScalar()) 
+0

kullanabileceği son insert Kimliği almak için Tamam INSERT INTO TableAdapter fikri ve buna benzer bir bağlantı kullanarak kod içinde bağlantı kurma ve sorgulama/yürütme. Teşekkürler! – user3223908