2015-11-02 191 views
2

我有一個數據庫,其中包含一個客戶表,其中包含以下列:CustID,CustName,ICNumber,ContactNumber和Address。它是一個基於服務的數據庫。C#插入記錄到數據庫表

string localdb = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString; 

SqlConnection con = new SqlConnection(localdb); 
con.Open(); 
SqlCommand cmd = new SqlCommand("INSERT INTO Customer(CustID,CustName,ICNumber,ContactNumber,Address)values(@CustID,@CustName,@ICNumber,@ContactNumber,@Address)", con); 

         cmd.Parameters.AddWithValue("@CustID", txtCustID.Text); 
         cmd.Parameters.AddWithValue("@CustName", txtCustName.Text); 
         cmd.Parameters.AddWithValue("@ICNumber", txtICNum.Text); 
         cmd.Parameters.AddWithValue("@ContactNumber", txtContact.Text); 
         cmd.Parameters.AddWithValue("@Address", txtAddress.Text); 
         cmd.ExecuteNonQuery(); 
         con.Close(); 

代碼編譯並運行。我遇到的問題是cmd.ExecuteNonQuery();被調用後,記錄不會被添加到表格中。

爲什麼記錄沒有顯示在數據庫表中?

+1

ExecuteNonQuery返回什麼值?另外,你應該使用塊來包裝你的SqlConnection和SqlCommand。 –

+0

您的代碼顯示正確,因此這很可能是數據庫問題。您是表CustID的主鍵嗎?如果是這樣,你不能像你正在做的那樣輸入它。 –

+0

你使用本地數據庫文件嗎?如果是這樣,你確定你正在尋找正確的文件?您的項目配置可能會製作本地數據庫文件的_copy_並插入_that_中。 –

回答

1

您忘記關閉insert命令上的引用"。使用try/catch以避免插入問題很好,例如:

string localdb = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString; 

try 
{ 
    SqlConnection con = new SqlConnection(localdb)) 


    con.Open(); 

    SqlCommand cmd = new SqlCommand("INSERT INTO Customer(CustID, CustName, ICNumber, ContactNumber, Address) VALUES (@CustID, @CustName, @ICNumber, @ContactNumber, @Address)", con); 
    cmd.Parameters.AddWithValue("@CustID", txtCustID.Text); 
    cmd.Parameters.AddWithValue("@CustName", txtCustName.Text); 
    cmd.Parameters.AddWithValue("@ICNumber", txtICNum.Text); 
    cmd.Parameters.AddWithValue("@ContactNumber", txtContact.Text); 
    cmd.Parameters.AddWithValue("@Address", txtAddress.Text); 
    cmd.ExecuteNonQuery(); 
} 
catch 
{ 
    // some errors 
} 
finally 
{ 
    if (con.State == ConnectionState.Open) 
     con.Close(); 
} 
+1

爲什麼不使用'using'語句? – Sybren

+0

是的,可以使用''語句,但是如果數據庫服務器不在,會發生什麼? –

+0

你是什麼意思? – Sybren

相關問題