2013-05-20 47 views
1

我的系統沒有附帶任何錯誤,但是當我嘗試添加時沒有添加任何東西給tblHardware。 這是我的代碼。這個INSERT命令爲什麼不起作用?

private void btnTilfoj_Click(object sender, EventArgs e) 
{ 
    conn = new SqlConnection(connectionstring); 
    conn.Open(); 
    commandstring = "INSERT INTO tblItUdstyr([HardwareType], [KobsDato], [SerieNr]) VALUES(@HardwareType, @KobsDato, @SerieNr)"; 
    comm = new SqlCommand(commandstring, conn); 

    comm.Parameters.Add("@HardwareType", SqlDbType.VarChar); 
    comm.Parameters["@HardwareType"].Value = cbHardware.Text.ToString(); 

    comm.Parameters.Add("@KobsDato", SqlDbType.Date); 
    comm.Parameters["@KobsDato"].Value = dtpKobsDato.Value; 

    comm.Parameters.Add("@SerieNr", SqlDbType.VarChar); 
    comm.Parameters["@SerieNr"].Value = txtSerienr.Text.ToString(); 
} 
+2

您錯過了'comm.ExecuteNonQuery()'調用 –

+1

您從不執行命令(或關閉連接)。 –

回答

2

每個命令都應以某種方式執行。
您的代碼是好的,但最後一次通話的缺乏

使用這樣的

commandstring = "INSERT INTO tblItUdstyr([HardwareType], [KobsDato], [SerieNr]) " + 
       "VALUES(@HardwareType, @KobsDato, @SerieNr)"; 
using(conn = new SqlConnection(connectionstring)) 
using(comm = new SqlCommand(commandstring, conn)) 
{ 
    conn.Open(); 
    comm.Parameters.Add("@HardwareType", SqlDbType.VarChar); 
    comm.Parameters["@HardwareType"].Value = cbHardware.Text.ToString(); 
    comm.Parameters.Add("@KobsDato", SqlDbType.Date); 
    comm.Parameters["@KobsDato"].Value = dtpKobsDato.Value; 
    comm.Parameters.Add("@SerieNr", SqlDbType.VarChar); 
    comm.Parameters["@SerieNr"].Value = txtSerienr.Text.ToString(); 
    comm.ExecuteNonQuery(); //This is the call that sends your data to the database 
} 

注意如何我已經把所有的代碼using statement內。這將在完成後強制關閉和處理SqlCommand和SqlConnection。同樣在例外的情況下

2

你需要運行這個命令:

comm.ExecuteNonQuery(); 

不過,也有一些其他的東西,我建議這樣做:

using (SqlConnection conn = new SqlConnection(connectionstring)) 
{ 
    conn.Open(); 

    commandstring = "INSERT INTO tblItUdstyr([HardwareType], [KobsDato], [SerieNr]) VALUES(@HardwareType, @KobsDato, @SerieNr)"; 
    comm = new SqlCommand(commandstring, conn); 

    comm.Parameters.AddWithValue("@HardwareType", cbHardware.Text.ToString()); 
    comm.Parameters.AddWithValue("@KobsDato", dtpKobsDato.Value); 
    comm.Parameters.AddWithValue("@SerieNr", txtSerienr.Text.ToString()); 

    comm.ExecuteNonQuery(); 
} 

我添加了using,因爲這將正確地關閉和處置SqlConnection。此外,我添加了AddWithValue方法,因爲它的流水線和更精確的類型匹配。