如何让TableAdapters正确运行插入,然后运行SELECT_LAST_ID()

时间:2011-04-21 00:49:53

标签: c# mysql tableadapter

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错误/误解它是如何工作的。

提前感谢您的任何答案。

1 个答案:

答案 0 :(得分:-1)

这是我认为不是100%肯定的。

为什么它在网站上不起作用
在您的网站中,每个新查询都可以使用新连接。

last_insert_id()仅返回当前连接的last_id 由于query1:insert ...使用与query2不同的连接:select last_insert_id() query2将始终返回1.

为什么它在数据库中正常工作
直接针对数据库运行,数据库足够聪明,可以保持同一连接打开,query1和query2在同一连接中运行。

该怎么办
您需要研究如何强制您的c#代码使用持久连接。