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

问题描述:

我试图插入一个文本框值到一个名为site_list的数据库表中。如何将记录插入到sql server express数据库表中?

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(); 
    } 
+3

您正在使用'User Instance/AttachDbFilename ='方法 - 我个人发现这个方法有时非常混乱和混乱。你是否尝试过运行你的代码,在'conn.Close()'上放置一个断点,当你的代码停在那里时,用你的代码检查数据目录中的数据库文件。 SQL Server Mgmt Studio Express?用户实例的东西倾向于复制MDF文件,因此插入可能发生得很好 - 但是当你看着它时,你正在查看旧版本的数据库(没有插入) – 2012-02-20 14:54:23

+0

感谢您的信息,什么使用sql server express插入更新删除操作的最佳方法是什么? – 2012-02-20 15:14:20

+0

将您的代码包裹在Try Catch for starters中。还要将addSite.Parameter(.....)更改为addSite.Parameters.AddWIthValue(“@ site_name”,textBox1.Text); Parameters.Add已被depricated .. – MethodMan 2012-02-20 15:15:53

按照人们的建议,尝试在服务器上创建数据库(使用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(); 
} 
+0

感谢您的解决方案 – 2012-02-20 16:15:39

尝试了这一点:

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(); 
    } 
} 

好运

+0

感谢您的信息 – 2012-02-20 15:48:48

+0

你没有使用SQL参数。 – 2012-02-20 15:51:46

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(); 
} 

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

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

(!重要@stringname的@是没有必要的,但保护您免受黑客)

这段代码有奇效我。

我的歉意。我之前给出的答案是行不通的,因为insert命令中使用的变量名(在你的情况下@site_name)必须与sqlcommand中使用的变量匹配。如在:

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

对不起,我可能造成的混乱。