如果获取LAST_INSERT_ID()数据

flame100 2013-08-12 04:25:30
我原来用的是mysql5.5.28版本,下面的函数能够正常调用,现在我把数据库改为5.6.12免安装版,出现了“指定的转换无效”的错误,试了几种类型也都不行,问下该如何获取该数据,谢谢!

函数内容介绍:插入一行用户信息,userid为自增类型数据,插入后通过LAST_INSERT_ID()获取刚插入的值并返回


public bool InsertRowUserInfo(DataRow rowUserInfo, out UInt32 userIdxx)
{
DataTable tbId = new DataTable();
userIdxx = 0;

try
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
MySqlCommand command = new MySqlCommand();
command.Connection = connection;
command.CommandText = "InsertTbUserInfo";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("?p_userid", rowUserInfo["USER_ID"]);
command.Parameters.AddWithValue("?p_username", rowUserInfo["USER_NAME"]);
command.Parameters.AddWithValue("?p_phone", rowUserInfo["PHONE"]);
command.Parameters.AddWithValue("?p_address", rowUserInfo["ADDRESS"]);
command.Parameters.AddWithValue("?p_usermemo", rowUserInfo["USER_MEMO"]);
command.Parameters.AddWithValue("?p_villageid", rowUserInfo["VILLAGE_ID"]);
command.ExecuteNonQuery();

//通过SELECT LAST_INSERT_ID(); 获取最近插入的自增型数据的值。
command.CommandText = "SelectLastInsertID"; //即LAST_INSERT_ID()
command.ExecuteNonQuery();

MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = command;
tbId.Clear();
adapter.Fill(tbId);
connection.Close();
userIdxx = (UInt32)(long)tbId.Rows[0][0];
command.Dispose();
connection.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
return true;
}
...全文
172 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2013-08-13
  • 打赏
  • 举报
回复
自己解决更好
flame100 2013-08-13
  • 打赏
  • 举报
回复
我采用一个笨办法解决了,不知道有没有隐患,呵呵 谁来顶下贴,我好结贴,谢谢! userIdxx = uint.Parse(tbId.Rows[0][0].ToString());

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧