将数据从 C# 写入 MDF 数据库
Posted
技术标签:
【中文标题】将数据从 C# 写入 MDF 数据库【英文标题】:Writing data from C# to a MDF database 【发布时间】: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 子句并仅使用服务器名称。 旁注:AddWithValue is Evil, Can we stop using AddWithValue() already? 永远不要单独使用“mdf 数据库”。 SQL Server 没有基于文件的数据库的概念,您总是处理服务器及其安装的数据库。您似乎更喜欢 SQLite 之类的可移植数据库,而不是 SQL Server。 【参考方案1】:mdf数据库的问题是需要安装SQLSever。
mysql 的问题也是类似的。 SQLLite 似乎也不适合我。
我最终为此创建了一个 .txt 文件,目前看来工作正常。
【讨论】:
以上是关于将数据从 C# 写入 MDF 数据库的主要内容,如果未能解决你的问题,请参考以下文章