【发布时间】:2021-03-02 20:00:51
【问题描述】:
我有一段 C# 代码用于侦听鼠标上移事件,然后将数据写入数据库。我在应用程序的 Visual Studio 中本地创建了一个 .MDF 数据库文件。我正在使用下面的代码。
问题是当我安装应用程序后在 SQL Server Management Studio 中打开 .MDF 数据库文件时,我看不到任何数据行。我可以看到我创建的列,但没有数据。 Visual Studio 中服务器资源管理器中的“服务器”似乎是我的笔记本电脑号码:
private void MouseUpEvent(object sender, KeyEventArgs e)
{
MousePressed = e.KeyCode.ToString();
int Counting = MousePressed.Split('/').Length - 1;
long TimePressed = _MousePressed_Length;
String DateToday = SQLDate;
String TimeToday = SQLTime;
float TimeNow = SQLTimeExactmilliseconds;
var guid = Guid.NewGuid().ToString();
var guid2 = guid + TimeNow;
string sqlCon = @"Data Source=.\SQLEXPRESS;" +
@"AttachDbFilename=|DataDirectory|\Database1.mdf;
Integrated Security=True;
Connect Timeout=30;
User Instance=True";
using (var db = new SqlConnection(sqlCon))
{
db.Open();
var command = new SqlCommand("INSERT INTO Database1 (Table) VALUES (@Date);", db);
command.Parameters.AddWithValue("@Date", DateToday);
var command2 = new SqlCommand("INSERT INTO Database1 (Table) VALUES (@Time);", db);
command2.Parameters.AddWithValue("@Time", TimeToday);
var command3 = new SqlCommand("INSERT INTO Database1 (Table) VALUES (@Mousepress);", db);
command3.Parameters.AddWithValue("@Mousepress", TimePressed);
var command5 = new SqlCommand("INSERT INTO Database1 (Table) VALUES (@TimeExact);", db);
command5.Parameters.AddWithValue("@TimeExact", TimeNow);
var command6 = new SqlCommand("INSERT INTO Database1 (Table) VALUES (@Id);", db);
command6.Parameters.AddWithValue("@Id", guid2);
command.ExecuteNonQuery();
command2.ExecuteNonQuery();
command3.ExecuteNonQuery();
command5.ExecuteNonQuery();
command6.ExecuteNonQuery();
db.Close();
}
}
当我尝试在服务器资源管理器中打开 .MDF 数据库文件时,我从 Visual Studio 收到此消息:
数据库“C:\Program Files (x86)\muhammadADIbrahim@outlook.com\Setup_Attention_Assist\Database1.mdf”已经存在。选择不同的数据库名称。
尝试为文件 C:\Users\muham\OneDrive\Desktop\Attention_Residue\BAAB UL WORK\NIZAM\CURRENT SOFTWARE\NizamSolutionBackup2.6\Nizam.Monitor\Database1.mdf 附加自动命名数据库失败。存在同名数据库,或指定文件无法打开,或位于 UNC 共享上。
代码编译并正常工作,所以我猜这只是与数据库的连接有关。
应该发生的是,当用户在本地安装应用程序并将数据写入数据库时,.mdf 数据与 .msi 文件一起安装。对于任何用户,我应该能够获取本地的.mdf 文件并在 SQL Server Management Studio 中打开它并查看结果。
谢谢, 易卜拉欣
【问题讨论】:
-
您需要修复您的连接字符串。 MDF 文件可以附加到 SQL Server 或直接从 MDF 文件打开。您的连接字符串不应同时具有 AttachFile(未附加)和 Server。我将从连接字符串中删除 AttachFile 子句并仅使用服务器名称。
-
永远不要单独使用“mdf 数据库”。 SQL Server 没有基于文件的数据库的概念,您总是处理服务器及其安装的数据库。您似乎更喜欢 SQLite 之类的可移植数据库,而不是 SQL Server。
标签: c# sql-server wpf mdf