2011-04-21 36 views
0

Sniplet:如何獲得TableAdapter的正常運行插入,然後SELECT_LAST_ID()

int resNo = -1; 
    MoviesTableAdapters.reservationTableAdapter resAdapter = new MoviesTableAdapters.reservationTableAdapter(); 
    if (Int32.TryParse(info[1], out phoneNo)) 
    { 
    resNo = resAdapter.InsertQuery(phoneNo, info[0]); 
    } 

運行此我不斷收到1作爲回報,即使我的LAST_INSERT_ID()是不同的東西。

我的查詢是這樣的

INSERT INTO `reservation` (`phone_no`, `password`) VALUES (@phone_no, @password); 
SELECT LAST_INSERT_ID() FROM reservation; 

明顯的結論這裏要說的是整數的回報沒有工作,但不管我初始化resNo來,我仍然得到1 - 當我運行它在我的網站上,當我直接對MySQL數據庫運行它時,我得到了正確的ID。

這使我得出了結論,即要麼我使用TableAdapter錯誤地/誤解了它的工作原理。

在此先感謝您的任何答案。

回答

-1

這是我認爲不是100%確定的。

爲什麼它沒有在網站
在您的網站上的每個新的查詢人可以使用一個新的連接工作。

last_insert_id()只返回當前連接的last_id。
由於QUERY1:insert ...使用從QUERY2不同的連接:select last_insert_id() QUERY2將始終返回1

爲什麼它會在數據庫中
直接對數據庫運行工作正常,數據庫是足夠聰明的保持打開相同的連接並且query1和query2在同一連接中運行。

怎麼辦呢
你需要研究如何強制C#代碼使用持久連接。