2017-01-24 186 views
0

我有簡單的表單,其格式爲users name,emailcity。我創建了一個數據庫和一個表,其中的字段爲id,name,emailcity。當我運行代碼時,我不會遇到任何錯誤或異常,但無法將插入的數據查看到表中。以下是我的代碼無法將表單數據插入到sql數據庫中

SqlConnection con = 
    new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=F:\\Database1.mdf;Integrated Security=True"); 
con.Open(); 
SqlCommand cmd = 
    new SqlCommand("insert into tbl_insert values (" + Convert.ToInt32(txtId.Text) + "," + "'" + txtName.Text + "'" + "," + "'" + txtEmail.Text + "'" + "," + "'" + txtboxCity.Text + "'" + ")", con); 
cmd.ExecuteNonQuery(); 
con.Close(); 

我附上了我的數據庫截圖。 數據庫設計:

enter image description here

這是輸出運行我的代碼後,我得到的。 輸出與空值存儲:

enter image description here

+0

你執行這個時候得到任何錯誤查詢? –

+0

我對你遇到的問題不太確定,但只想給你一個關於SqlParameter的https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter (v = vs.110).aspx你寫的代碼非常容易受到SQL注入的影響,所以我肯定會推薦添加SqlParameter,如果這個項目不僅僅是練習/樂趣 – Ben

+0

@不幸的是iam在運行時不會出錯程序 –

回答

1

試試這個

con.Open(); 
SqlCommand cmd = new SqlCommand(@"insert into tbl_insert values(@name,@email,@add)", con); 
cmd.Parameters.AddWithValue("@name", txtname.Text); 
cmd.Parameters.AddWithValue("@email", txtemail.Text); 
cmd.Parameters.AddWithValue("@add", txtadd.Text); 
cmd.ExecuteNonQuery(); 
con.Close(); 

我懷疑列id是自動編號

如果不只是添加另一個參數查詢和cmd.Parameters

+0

如果'id'列是Identity,他應該給出錯誤,但他已經提到:*我沒有遇到任何錯誤或異常*。 –

+0

同樣的問題繼續...沒有錯誤調試顯示數據被正確添加,但它沒有出現在表中 –

3

你應該總是使用parameterized queries避免SQL Injection和報價的問題得到的RID:

SqlCommand cmd = new SqlCommand("insert into tbl_insert values (@id,@name,@Email,@City)"); 
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(txtId.Text)); 
cmd.Parameters.AddWithValue("@name", txtName.Text); 
cmd.Parameters.AddWithValue("@Email", txtEmail.Text); 
cmd.Parameters.AddWithValue("@City", txtboxCity.Text); 

雖然直接指定類型,並使用Value屬性更優於AddWithValue

cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = txtName.Text; 

Can we stop using AddWithValue() already?

相關問題