【问题标题】:How to insert record into a sql server express database table?如何将记录插入到 sql server express 数据库表中?
【发布时间】:2012-02-20 14:51:10
【问题描述】:

我正在尝试将文本框值插入到名为 site_list 的数据库表中。

site_list 表包含两列 idsite_nameid 设置为自动递增

这是我正在尝试的代码,执行时没有错误,但数据未显示在表格中

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
             "Data Source=.\\SQLExpress;" +
             "User Instance=true;" +
             "Integrated Security=true;" +
             "AttachDbFilename=|DataDirectory|scraper_db.mdf;";            

SqlCommand addSite = new SqlCommand("INSERT INTO site_list (site_name) "
     + " VALUES (@site_name)", conn);

addSite.Parameters.Add("@site_name", SqlDbType.NVarChar).Value = textBox1.Text;

conn.Open();
addSite.ExecuteNonQuery();
conn.Close();

任何帮助将不胜感激。

问候

编辑:

这段代码开始工作了

    string connstring = "Data Source=.\\SQLExpress;"+
                        "Integrated Security=true;"+
                        "User Instance=true;"+
                        "AttachDBFilename=|DataDirectory|scraper_db.mdf;"+
                        "Initial Catalog=scraper_db";

    using (SqlConnection connection = new SqlConnection(connstring))
    {
        connection.Open();
        SqlCommand addSite = new SqlCommand("INSERT INTO site_list (site_name)"+
                             "VALUES (@site_name)", connection);
        addSite.Parameters.AddWithValue("@site_name", textBox1.Text); 
        addSite.ExecuteNonQuery();
        connection.Close();
    }

【问题讨论】:

  • 您使用的是User Instance / AttachDbFilename= 方法——我个人觉得这种方法有时非常混乱和混乱。您是否尝试过运行您的代码,在conn.Close() 上放置一个断点,当您的代码停在那里时,去检查您的数据目录中的数据库文件,例如SQL Server Mgmt Studio Express??用户实例的东西倾向于在 MDF 文件周围复制,因此您的插入可能发生得很好 - 但是当您查看它时,您正在查看的是旧版本的数据库(没有您的插入)
  • 感谢您的信息,使用 sql server express 执行插入更新删除操作的最佳方法是什么?
  • 将您的代码包装在 Try Catch 中以供初学者使用。同时将 addSite.Parameter(.....) 更改为 addSite.Parameters.AddWIthValue("@site_name", textBox1.Text); Parameters.Add 已被弃用..
  • 我总是会在服务器上创建数据库(例如 SQL Server Management Studio Express),然后使用它的逻辑数据库名称连接到它(不要摆弄物理数据库文件 - .mdf 和 .ldf - 将其留给服务器.....)

标签: c# .net sql-server sql-server-express sql-server-2012


【解决方案1】:

按照人们的建议,尝试在服务器上创建数据库(使用Sql Management Studio 会更容易处理)。 完成后,请尝试以下操作(刚刚测试过并且有效):

using (SqlConnection conn = new SqlConnection(@"Persist Security Info=False;Integrated Security=true;Initial Catalog=myTestDb;server=(local)"))
{
    SqlCommand addSite = new SqlCommand(@"INSERT INTO site_list (site_name) VALUES (@site_name)", conn);
    addSite.Parameters.AddWithValue("@site_name", "mywebsitename");
    addSite.Connection.Open();
    addSite.ExecuteNonQuery();
    addSite.Connection.Close();
}

【讨论】:

    【解决方案2】:
    try
    {
        using (SqlConnection conn = new SqlConnection(@"Persist Security Info=False;Integrated Security=true;Initial Catalog=myTestDb;server=(local)\SQLEXPRESS;database=Inventory;Data Source=localhost\SQLEXPRESS;"))
        {
            SqlCommand addSite = new SqlCommand(@"INSERT INTO Creation (Name,Product,Quantity,Category) VALUES (@Name,@Product,@Quantity,@Category)", conn);
            addSite.Parameters.AddWithValue("@Name", textBox1.Text);
            addSite.Parameters.AddWithValue("@Product", textBox2.Text);
            addSite.Parameters.AddWithValue("@Quantity", textBox3.Text.ToString());
            addSite.Parameters.AddWithValue("@Category", textBox4.Text);
            thisConnection.Open();
            addSite.ExecuteNonQuery();
        }
    }
    catch
    {
        thisConnection.Close();
    }
    

    【讨论】:

      【解决方案3】:

      试试这个:

      string sql = String.Format("INSERT INTO site_list (site_name) VALUES('{0}')", myTextBox.Text);
      using(SqlConnection connection = new SqlConnection(myConnectionString))
      {
         connection.open();
         using(SqlCommand cmd = new SqlCommand(sql, connection))
         {
            cmd.ExecuteNonQuery();
         }
      }
      

      祝你好运

      【讨论】:

        【解决方案4】:

        尝试将您的文本框值存储在变量中。如:

        @stringname = textbox1.text
        addSite.Parameters.Add("@site_name", SqlDbType.NVarChar).Value = @stringname;
        

        (重要提示!@stringname 中的 @ 不是必需的,但可以保护您免受黑客攻击!)

        这段代码为我创造了奇迹。

        【讨论】:

          【解决方案5】:

          我很抱歉。我之前给出的答案将不起作用,因为插入命令中使用的变量名(在您的情况下为@site_name)必须与您的 sqlcommand 中使用的变量匹配。如:

          @site_name = textbox1.text
          addSite.Parameters.Add("@site_name", SqlDbType.NVarChar).Value = textBox1.Text;
          

          很抱歉我可能造成的混乱。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多