c# - 准备好的 MySQL 语句插入失败,没有错误
问题描述
我正在使用 MySQL 尝试将新用户添加到我的数据库中。用户有一个 ID、一个名字、一个姓氏和一个出生日期。但是当我运行下面的代码(并conn.close()
在我完成后运行)时,数据库告诉我(使用 HeidiSQL)在表概述中现在表中有一个新行但是当我打开数据选项卡查看行时, 空无一物。它是空的。运行 aCOUNT(*)
也会返回 0。
using (MySqlTransaction transaction = conn.BeginTransaction())
{
using (MySqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "INSERT INTO USERS(NAME_FIRST,NAME_LAST,DATE_OF_BIRTH) VALUES(@nameFirst,@nameLast,@dateOfBirth)";
cmd.Transaction = transaction;
cmd.Parameters.AddWithValue("@nameFirst", user.NameFirst);
cmd.Parameters.AddWithValue("@nameLast", user.NameLast);
cmd.Parameters.AddWithValue("@dateOfBirth", user.DateOfBirth);
cmd.Prepare();
cmd.ExecuteNonQuery();
lastInsertId = (uint)cmd.LastInsertedId;
}
}
我没有错误。任何日志中都没有显示任何内容,每个人都和我一样。
我究竟做错了什么?
解决方案
感觉就像是使用begintransaction
which 开始交易。这意味着autocommit=false
整个交易。
之后ExecuteNonQuery
做一个transaction.Commit();
,看看他们是否出现。
推荐阅读
- reactjs - Google auth2 .getCurrentUser() 获取用户令牌?
- c# - 将事件从本机代码引发到以 xamarin 形式共享的最佳方法是什么
- mysql - mysqldump + gzip 制作 0 字节的 gz 文件
- android - Android LinearLayoutManager 创建 NullPointerException(Android 代码中的错误?)
- python-3.x - 从现有的具有较少参数的函数生成一个新函数
- apache-kafka - 在 relabance 期间,StreamThreads 的状态是什么?
- python - 我必须制作一个刽子手游戏 TypeError: 'int' 类型的参数不可迭代
- python - 如何使用按钮布局解决此 Python tkinter 问题
- c# - 在winform C#中滚动时闪烁和弄乱flowLayoutPanel项目
- vue.js - 基础网格在 vue js 模板中不起作用