Sniplet:
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数据库运行它我得到了正确的身份证。
这导致我得出结论,是我使用TableAdapter错误/误解它是如何工作的。
提前感谢您的任何答案。
答案 0 :(得分:-1)
这是我认为不是100%肯定的。
为什么它在网站上不起作用
在您的网站中,每个新查询都可以使用新连接。
last_insert_id()
仅返回当前连接的last_id
由于query1:insert ...
使用与query2不同的连接:select last_insert_id()
query2将始终返回1.
为什么它在数据库中正常工作
直接针对数据库运行,数据库足够聪明,可以保持同一连接打开,query1和query2在同一连接中运行。
该怎么办
您需要研究如何强制您的c#代码使用持久连接。