如何将记录插入到 sql server express 数据库表中?

Posted

技术标签:

【中文标题】如何将记录插入到 sql server express 数据库表中?【英文标题】:How to insert record into a sql server express database table? 【发布时间】: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 - 将其留给服务器.....) 【参考方案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;

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

【讨论】:

以上是关于如何将记录插入到 sql server express 数据库表中?的主要内容,如果未能解决你的问题,请参考以下文章

通过需要很长时间的访问将记录插入到 SQL Server 链接表中[重复]

SQL Server 视图插入更新

sql server返回插入记录的ID(多条记录)

将 100 万条记录从 SQL Server 插入 BigQuery 表,通过 CDATA odbc 驱动程序链接

sql server 中如何插入一条时间记录

如何在 SQL Server 2008 上创建插入更新触发器