2012-02-20 205 views
3

我試圖插入一個文本框值到一個名爲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

回答

3

按照人們的建議,嘗試在服務器上創建數據庫(使用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

1

嘗試了這一點:

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

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

嘗試在一個變量存儲您的文本框的值。如:

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

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

這段代碼有奇效我。

0

我的歉意。我之前給出的答案是行不通的,因爲insert命令中使用的變量名(在你的情況下@site_name)必須與sqlcommand中使用的變量匹配。如在:

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

對不起,我可能造成的混亂。

相關問題