为什么 ExecuteNonQuery 捕获异常 {"validation error for column \"ORGTABLE\".\"FIKEYID\", value \" * null * \""}
string stValuesPlaceHolder = "@p0";
for (int iii = 1; iii < liststFieldValuesNoKeyId.Count; iii++)
stValuesPlaceHolder += ", @p" + (iii).ToString();
FbTransaction fbTransaction = fbConn.BeginTransaction();
FbCommand fbCmd = new FbCommand("INSERT INTO " + stTableName + "(" + stFieldNamesNoKeyId + ") VALUES ( " + stValuesPlaceHolder + " )", fbConn, fbTransaction);
for (int iii = 0; iii < liststFieldValuesNoKeyId.Count; iii++) {
string stPlaceHolder = "@p" + (iii).ToString();
string stValue = liststFieldValuesNoKeyId[iii];
fbCmd.Parameters.AddWithValue(stPlaceHolder, stValue);
}
fbCmd.ExecuteNonQuery();
fbTransaction.Commit();
stTableName 是 OrgTable。
字段名称为:
fstPriority, fstInfo, fstDateCreated, fstDateModified, fiKeyID.
字段定义如下:
fstPriority VARCHAR(30), fstInfo VARCHAR(100), fstDateCreated VARCHAR(30), fstDateModified VARCHAR(30), fiKeyID INTEGER PRIMARY KEY
在这部分代码中:
stFieldNamesNoKeyId = "fstPriority, fstInfo, fstDateCreated, fstDateModified".
stValuesPlaceHolder = "@p0, @p1, @p2, @p3"
四个 fbCmd.Parameters.AddWithValue:
stPlaceHolder = "@p0" ... stValue = "1st value";
stPlaceHolder = "@p1" ... stValue = "2nd value";
stPlaceHolder = "@p2" ... stValue = "3rd value";
stPlaceHolder = "@p3" ... stValue = "4th value";
我没有为 fiKeyID 添加一个值,因为它作为主键。