c# - SQL Server Express 数据库表未更新
问题描述
我想知道为什么当下面的方法成功执行时我的 SQL Server Express 数据库表没有得到更新?
public void addUser(User user)
{
string query = "INSERT INTO users (username, password, firstname, lastname, isactive, accesslevel) VALUES (@usr, @psw, @fname, @lname, @status, @access)";
pSqlConn = new SqlConnection(pConnectingString);
SqlCommand cmd = new SqlCommand(query, pSqlConn);
SqlParameter pmtrUsername = new SqlParameter("@usr", user.Username);
SqlParameter pmtrPassword = new SqlParameter("@psw", user.Password);
SqlParameter pmtrFirstname = new SqlParameter("@fname", user.Firstname);
SqlParameter pmtrLastname = new SqlParameter("@lname", user.Lastname);
SqlParameter pmtrStatus = new SqlParameter("@status", user.IsActive);
SqlParameter pmtrAccessLevel = new SqlParameter("@access", user.AccessLevel);
cmd.Parameters.Add(pmtrFirstname);
cmd.Parameters.Add(pmtrLastname);
cmd.Parameters.Add(pmtrUsername);
cmd.Parameters.Add(pmtrPassword);
cmd.Parameters.Add(pmtrStatus);
cmd.Parameters.Add(pmtrAccessLevel);
pSqlConn.Open();
cmd.ExecuteNonQuery();
System.Windows.Forms.MessageBox.Show("Success!");
pSqlConn.Close();
}
解决方案
整个User Instance 和 AttachDbFileName=方法是有缺陷的 - 充其量!在 Visual Studio 中运行您的应用程序时,它将围绕.mdf
文件进行复制(从您的App_Data
目录到输出目录 - 通常.\bin\debug
是您的应用程序运行的位置),并且很可能,您的INSERT
工作正常 - 但您只是看错了 . mdf文件到底!
如果您想坚持使用这种方法,请尝试在myConnection.Close()
调用上设置断点 - 然后.mdf
使用 SQL Server Mgmt Studio 检查文件 - 我几乎可以肯定您的数据在那里。
我认为真正的解决方案是
安装 SQL Server Express(反正你已经完成了)
安装 SQL Server Management Studio Express
在SSMS Express中创建您的数据库,给它一个逻辑名称(例如
StoreManagerDB
)使用它的逻辑数据库名称(在服务器上创建它时给出)连接到它——不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\\SQLEXPRESS;Database=StoreManagerDB;Integrated Security=True
其他一切都和以前完全一样...
另请参阅 Aaron Bertrand 的优秀博文 踢坏习惯:使用 AttachDbFileName了解更多背景信息。
推荐阅读
- java - 使用 XOR 加密 Cyrillic 中的字符串
- sql - Hana DB 不允许在可空字段中使用空值
- python - 这两个 python if 语句是否相同?
- javascript - rxjs/ajax 响应无法分配给对象“[object Object]”的只读属性“taskData”
- spring-boot - Spring Integration for SFTP 给出私钥错误
- node.js - express.js 表单 post req.body 为空体 {}
- javascript - 使用 vanilla JavaScript 将格式“dd-mm-yyyy”的日期字符串转换为字符串格式“dd mon”
- delphi - Delphi 项目的第二次构建比第一次构建花费的时间要长得多
- kotlin - Vert.x WebClient https Post 挂起
- excel - Python -- 将字符串添加到剪贴板,以适当的格式粘贴到 Excel(即,分隔为行/列)