【问题标题】:Unable to insert to SQL Server database无法插入到 SQL Server 数据库
【发布时间】:2016-12-09 09:59:01
【问题描述】:
using (Connection = new SqlConnection(connectionstring))                
{
    SqlCommand voegtoe = new SqlCommand("INSERT INTO Speler(Naam, Rugnummer, Leeftijd) VALUES(@Naam, @Rugnummer, @Leeftijd)");

    voegtoe.CommandType = CommandType.Text;
    voegtoe.Connection = Connection;
    voegtoe.Parameters.AddWithValue("@Naam", textBox1.Text);
    voegtoe.Parameters.AddWithValue("@Rugnummer", textBox2.Text);
    voegtoe.Parameters.AddWithValue("@Leeftijd", textBox3.Text);

    Connection.Open();
    voegtoe.ExecuteNonQuery();            
}

如果我打开我的数据库,则没有添加任何内容。我认为它应该添加用户在文本框中输入的文本。

连接字符串是:

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirector‌​y|\Speler.mdf;Integr‌​ated Security=True

【问题讨论】:

  • 检查您的情况是否像这里描述的stackoverflow.com/questions/17147249/…
  • 用try-catch包围它并在catch中设置断点
  • 您的目标是正确的数据库吗?你的连接字符串是什么?您是否正在尝试存储在基于文件的数据库中?
  • connectionstring = ConfigurationManager.ConnectionStrings["KillerApp1.Properties.Settings.SpelerConnectionString"].ConnectionString;我发现问题出在连接之间,因为数据库连接不正确
  • @k.Sonnemans 这不是连接字符串。这是您用来从设置中加载连接字符串的代码。什么是连接字符串?它是否使用AttachDbFilename 来加载本地数据库?

标签: c# sql sql-server ado.net


【解决方案1】:

代码没有问题。我怀疑您的连接字符串使用了用户实例数据库,即它具有AttachDBFilenameUser Instance=true 关键字:

Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\db.mdf; User Instance=true;...

这意味着每个尝试附加到数据库文件的用户都会获得自己的副本。当您尝试使用 SSMS 检查数据时,您会看到一个不同的数据库副本。

除了会造成混乱之外,此功能已被弃用,将来将被删除。

只需在您的数据库服务器中创建一个适当的数据库并通过指定其名称连接到它:

Data Source=.\SQLEXPRESS; Initial Catalog=MyDB;...

您可以从 SSMS 中的 New Database 菜单或使用 CREATE DATABASE MyDB 命令创建数据库

您可以在 Aaron Bertrand 的 Bad habits : Using AttachDBFileName 中找到更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    相关资源
    最近更新 更多