我需要你的帮助..也许是我无法解决的小任务,但我不知道如何在任何搜索引擎上搜索
我在我的WPF登录注册桌面应用程序中使用.mdf
文件(vs 2103)..一切正常,没有编译错误。我使用Visual Studio中的查询将一些数据插入.mdf
文件,然后尝试通过应用程序登录,它运行正常。此外,如果我使用.mdf
文件的“绝对路径”,我也可以从应用程序的注册选项中注册即插入.mdf
文件。当我尝试使用“相对路径”插入.mdf
文件时,问题就开始了...它不会将数据插入.mdf
....我不知道为什么
(这个绝对路径不起作用。我在数据库文件夹中有.mdf
个文件)
//connection string
connetionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database\Database1.mdf;Integrated Security=True";
//code
SqlCommand sqlCmd;
string sql = null;
SqlConnection sqlCnn = new SqlConnection(connetionString);
try
{
sqlCnn.Open();
sql = "insert into [NewTable] ( Name , Password ) values ('ABC' , '12345')";
sqlCmd = new SqlCommand(sql, sqlCnn);
sqlCmd.ExecuteNonQuery();
sqlCnn.Close();
MessageBox.Show("You have Been Registered");
}
catch (Exception ex)
{
MessageBox.Show("" + ex);
}
显示消息“您已注册”
但在.mdf文件中不可见... 我想问..为什么它表现得像这样....我想使用相对路径,因为我们无法判断客户端系统的绝对路径......我在做什么错?如何处理这个(我猜是自制的)问题?
答案 0 :(得分:1)
整个 AttachDbFileName = 方法存在缺陷 - 充其量!在Visual Studio中运行应用程序时,它将复制.mdf
文件(从App_Data
目录到输出目录 - 通常是.\bin\debug
- 应用程序运行的地方)和最有可能,您的INSERT
工作正常 - 但您最后只是查看错误的.mdf文件!
如果你想坚持这种方法,那么尝试在myConnection.Close()
调用上设置一个断点 - 然后用SQL Server Mgmt Studio Express检查.mdf
文件 - 我几乎可以肯定你的数据在那里。
我认为真正的解决方案将是
安装SQL Server Express(你已经完成了)
安装SQL Server Management Studio Express
在 SSMS Express 中创建数据库,为其指定一个逻辑名称(例如MyDatabase
)
使用其逻辑数据库名称(在服务器上创建时给定)连接到它 - 并且不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\\SQLEXPRESS;Database=MyDatabase;Integrated Security=True
其他所有内容都完全与以前相同......
另请参阅Aaron Bertrand优秀博客文章Bad habits to kick: Using AttachDbFileName以获取更多深入解释和提示