我在連接到我的C#應用程序上的SQL服務器時遇到了一些麻煩。 我有一個代碼,可以插入或更新我的數據庫的表。 如果我更新表格,一切都變得越來越重要,但如果我插入它,我會收到錯誤消息。SQL連接錯誤 - C#
下面是代碼:
int ID;
conn = new SqlConnection(@"Data Source = SERVER\SQLEXPRESS; Initial Catalog = SQLFiat; User ID = sa; Password = secret");
conn.Open();
if (cbCarros.SelectedIndex >= 0)
{
ID = cbCarros.SelectedIndex + 1;
cmd = new SqlCommand("UPDATE Carros SET [email protected]_Carro,[email protected],[email protected],[email protected],[email protected],[email protected] WHERE [email protected]_Carro", conn);
cmd.Parameters.AddWithValue("@ID_Carro", ID);
cmd.Parameters.AddWithValue("@Nome", tbNome.Text);
cmd.Parameters.AddWithValue("@Modelo", tbModelo.Text);
cmd.Parameters.AddWithValue("@Combustivel", cbCombustivel.SelectedItem.ToString());
cmd.Parameters.AddWithValue("@Cambio", cbCambio.SelectedItem.ToString());
cmd.Parameters.AddWithValue("@Portas", Int32.Parse(tbPortas.Text));
cmd.ExecuteNonQuery();
cmd.Dispose();
cmd = new SqlCommand("UPDATE Rel_Carro_Apertadeira SET [email protected]_Carro,[email protected]_Aper WHERE [email protected]_Carro", conn);
cmd.Parameters.AddWithValue("@ID_Carro", ID);
int ID_Aper = cbApertadeiras.SelectedIndex + 1;
cmd.Parameters.AddWithValue("@ID_Aper", ID_Aper);
cmd.ExecuteNonQuery();
}
else
{
ID = retornaMaiorID() + 1;
cmd = new SqlCommand("INSERT INTO Carros (ID_Carro,Nome,Modelo,Combustivel,Cambio,Portas) Values (@ID_Carro,@Nome,@Modelo,@Combustivel,@Cambio,@Portas)", conn);
cmd.Parameters.AddWithValue("@ID_Carro", ID);
cmd.Parameters.AddWithValue("@Nome", tbNome.Text);
cmd.Parameters.AddWithValue("@Modelo", tbModelo.Text);
cmd.Parameters.AddWithValue("@Combustivel", cbCombustivel.SelectedItem.ToString());
cmd.Parameters.AddWithValue("@Cambio", cbCambio.SelectedItem.ToString());
cmd.Parameters.AddWithValue("@Portas", Int32.Parse(tbPortas.Text));
cmd.ExecuteNonQuery();
cmd.Dispose();
cmd = new SqlCommand("INSERT INTO Rel_Carro_Apertadeira (ID_Carro,ID_Aper) Values (@ID_Carro,@ID_Aper)", conn);
cmd.Parameters.AddWithValue("@ID_Carro", ID);
int ID_Aper = cbApertadeiras.SelectedIndex + 1;
cmd.Parameters.AddWithValue("@ID_Aper", ID_Aper);
cmd.ExecuteNonQuery();
}
錯誤是:
'System.InvalidOperationException' 類型 的未處理的異常出現在system.data.dll的ExecuteNonQuery需要一個開放和 可用的連接。連接的當前狀態爲關閉
在此先感謝
感謝您使用參數化查詢。 – ChaosPandion
除了手頭的問題,你需要看這篇文章。 http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/我會建議使用存儲過程,而不是通過SQL,這是更好的一些包括AddWithValue問題在內的原因。 –
作爲建議,不要在Internet的任何地方張貼證書,因爲明顯的安全原因 – Rober