[英]c# dataGridView to SQL (insert)
我正在尝试将数据从datGridView插入SQL Server(我从Excel文件加载数据)。 但是我收到一个主键错误,该错误不应为null。
如果我使用这样的东西:
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.");
}
我该如何解决?
发生第一个问题是因为显然您没有设置主键(在表上未将其设置为IDENTITY)。
选中此选项以查看如何将表配置为自动递增ID: https : //msdn.microsoft.com/zh-cn/library/ms186775(v=sql.120).aspx
发生“第二个”错误是因为ID在表上必须唯一。 因此,最好将ID设置为身份字段。
(我建议您在表上创建一个新列,然后删除当前列。您可以在此处找到操作方法: https : //social.msdn.microsoft.com/Forums/sqlserver/en-US/04d69ee6- d4f5-4f8f-a115-d89f7bcbc032 /如何更改列到Identity11?forum = transactsql )
在对表进行此维护之后,您应该删除以下内容:
cmd.Parameters.AddWithValue("@id", 1012)
并从中更改您的插入语句:
INSERT INTO Monitoring(id,date,time) VALUES(@id,@date,@time)
对此:
INSERT INTO Monitoring(date,time) VALUES(@date,@time)
因为既然您的id列将是一个标识,所以您不需要提供它,因为它将自动为您提供增量。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.