我看了一下,但大多数答案都与我无法连接的SQL存储过程或LOAD
我目前正在使用这段代码块从另一个问题得到一些帮助。如您所见,Access数据库作为一个整体插入。假设我将另一列添加到名为ID的表中,该列是唯一的,我如何确定它是否已被插入?
"Select count(*) from MyTable where id = 1"
这是我到目前为止的想法:
using (OleDbConnection conn = new OleDbConnection(Con))
using (OleDbCommand cmd = new OleDbCommand())
{
cmd.Connection = conn;
conn.Open();
for (int i = 0; i <= DGVExcel.Rows.Count - 1; i++)
{
cmd.CommandText =
"Insert INTO ACTB (FirstName, LastName, GrossIncome, LessTNT, TaxableIncomeCE, TaxableIncomePE, GrossTaxableIncome, LessTE, LessPPH, NetTax, TaxDue, HeldTaxCE, HeldTaxPE, TotalTax) " +
"VALUES(@First, @Last, @Gross, @LessTNT, @TCI, @ADDTI, @GTI, @LessTE, @LessPPH, @LessNTI, @TD, @TWCE, @TWPE, @TATW)";
//cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(txtID.Text));
cmd.Parameters.AddWithValue("@First", DGVExcel.Rows[i].Cells[0].Value);
cmd.Parameters.AddWithValue("@Last", DGVExcel.Rows[i].Cells[1].Value);
cmd.Parameters.AddWithValue("@Gross", Convert.ToDouble(DGVExcel.Rows[i].Cells[2].Value));
cmd.Parameters.AddWithValue("@LessTNT",
Convert.ToDouble(DGVExcel.Rows[i].Cells[3].Value));
cmd.Parameters.AddWithValue("@TCI", Convert.ToDouble(DGVExcel.Rows[i].Cells[4].Value));
cmd.Parameters.AddWithValue("@ADDTI", Convert.ToDouble(DGVExcel.Rows[i].Cells[5].Value));
cmd.Parameters.AddWithValue("@GTI", Convert.ToDouble(DGVExcel.Rows[i].Cells[6].Value));
cmd.Parameters.AddWithValue("@LessTE", Convert.ToDouble(DGVExcel.Rows[i].Cells[7].Value));
cmd.Parameters.AddWithValue("@LessPPH",
Convert.ToDouble(DGVExcel.Rows[i].Cells[8].Value));
cmd.Parameters.AddWithValue("@LessNTI",
Convert.ToDouble(DGVExcel.Rows[i].Cells[9].Value));
cmd.Parameters.AddWithValue("@TD", Convert.ToDouble(DGVExcel.Rows[i].Cells[10].Value));
cmd.Parameters.AddWithValue("@TWCE", Convert.ToDouble(DGVExcel.Rows[i].Cells[11].Value));
cmd.Parameters.AddWithValue("@TWPE", Convert.ToDouble(DGVExcel.Rows[i].Cells[12].Value));
cmd.Parameters.AddWithValue("@TATW", Convert.ToDouble(DGVExcel.Rows[i].Cells[13].Value));
cmd.ExecuteNonQuery();
}
}
啊,该死的我忘记了我无法预先确定价值。它必须以某种方式从Datagridview中提取,因为这些是很多行,我不能简单地指定DGV.Rows [i] .Cells [1],对吧?
编辑: 我没有在帖子中暗示我需要明确知道Datagridview中DB中是否存在类似的字段,因为在单独的函数中我将它们的值添加到DB中的原始值。没有重复,但它们的值会更新。像Employee1有10000收入工资,表看重复,在字段匹配的DB中将它的版本收入工资加到原来的。
答案 0 :(得分:-1)
一种选择是在语句中包含一个查找@ID的WHERE子句。
WHERE ACTB.ID <> @ID
这假设ID不是插入生成的自动增量字段。如果是,则可以使用WHERE子句中的其他字段,例如FirstName和LastName