-1
我正在嘗試爲我們的小公司獲得一個小工具來工作。c#必須聲明標量變量「@Kundenname」
這應該將數據從DataGridView填充到SQL Server標準數據庫中。 讀出SQL表格工作正常,但我無法獲得寫入值的工具。
我得到標題中提到的錯誤。
下面的代碼:
var kdNummer = new SqlParameter("Kundennummer", SqlDbType.Int);
var kdName = new SqlParameter("Kundenname", SqlDbType.VarChar);
var kdMail = new SqlParameter("Kundenmail", SqlDbType.VarChar);
var kdTele = new SqlParameter("Telefon", SqlDbType.VarChar);
string kdquery = "INSERT INTO Kunden VALUES (@Kundennummer, @Kundenname, @Kundenmail, @Telefon)";
using (SqlConnection updatedb = new SqlConnection("Data Source=;Initial Catalog=updatedb;User ID=;Password="))
{
updatedb.Open();
for (int i = 0;i<dataGridView1.Rows.Count;i++)
{
using(SqlCommand NrDaten = new SqlCommand(kdquery, updatedb))
{
kdNummer.Value = dataGridView1.Rows[i].Cells["Kundennummer"].Value;
NrDaten.Parameters.Add(kdNummer);
NrDaten.ExecuteNonQuery();
}
using (SqlCommand NameDaten = new SqlCommand(kdquery, updatedb))
{
kdName.Value = dataGridView1.Rows[i].Cells["Kundenname"].Value;
NameDaten.Parameters.Add(kdName);
NameDaten.ExecuteNonQuery();
}
using (SqlCommand MailDaten = new SqlCommand(kdquery, updatedb))
{
kdMail.Value = dataGridView1.Rows[i].Cells["Kundenmail"].Value;
MailDaten.Parameters.Add(kdMail);
MailDaten.ExecuteNonQuery();
}
using (SqlCommand TeleDaten = new SqlCommand(kdquery, updatedb))
{
kdTele.Value = dataGridView1.Rows[i].Cells["Telefon"].Value;
TeleDaten.Parameters.Add(kdTele);
TeleDaten.ExecuteNonQuery();
}
}
updatedb.Close();
}
我試圖在代碼看起來像現在之前將所有內容打包到一個語句中。但我得到一個錯誤,它說SqlParameter已經在另一個ParameterCollection中。我用你的代碼也試過了,但現在又說了,參數已經在另一個ParameterCollection中:( – JasonX2000
@ jasonX2000你是否在我的答案中嘗試了短版本?我還會更新長解決方案 –
@Torsten Dittmar 看來似乎工作,只需要將AddWidthValue更改爲AddWithValue。:) 它在另一個錯誤運行至極說: 附加信息:字符串或二進制數據將被截斷。 該聲明已被終止。 但是,當我得到這個錯誤,我可以說更多。 – JasonX2000