Я пытаюсь вставить данные из datGridView в SQL Server (я загружаю данные из файла Excel). Но я получаю ошибку первичного ключа, что она не должна быть нулевой.C# dataGridView to SQL (insert)
И если я использую что-то вроде этого:
cmd.Parameters.AddWithValue("@id", 1012);
возвращает дубликат ключа ошибки ...
Это мой код:
private void btnTest_Click(object sender, EventArgs e)
{
int stCol = dataGWseznam.Columns.Count;
string[] poljeNaslovov = new string[dataGWseznam.Rows.Count];
for (int i = 0; i < stCol; i++)
{
poljeNaslovov[i] = Convert.ToString(dataGWseznam.Columns[i].HeaderText);
}
string[] poljeNaslovovAfna = new string[dataGWseznam.Rows.Count];
for (int i = 0; i < stCol; i++)
{
poljeNaslovovAfna[i] ="@" + Convert.ToString(dataGWseznam.Columns[i].HeaderText);
}
string msg1 = String.Join(",", poljeNaslovov.Where(s => !string.IsNullOrEmpty(s)));
string msg2 = String.Join(",", poljeNaslovovAfna.Where(s => !string.IsNullOrEmpty(s)));
try
{
foreach (DataGridViewRow row in dataGWseznam.Rows)
{
string constring = @"MY DATA SOURCE";
using (SqlConnection conn = new SqlConnection(constring))
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO Monitoring(id,date,time) VALUES(@id,@date,@time)", conn))
{
cmd.Parameters.AddWithValue("@id", 1012);
cmd.Parameters.AddWithValue("@date", row.Cells["date"].Value);
cmd.Parameters.AddWithValue("@time", row.Cells["time"].Value);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
}
catch (Exception ex)
{
//handle exception
MessageBox.Show(ex.Message);
}
MessageBox.Show("Done.");
}
Как я могу решить эту проблему?
вы используете один и тот же идентификатор для всех строк cmd.Parameters.AddWithValue ("@ id", 1012); Вы должны реализовать somthing для allcate diffrent primarykey –