C# prepared语句中出错(插入到无效变量上的stopping中,我想用NULL替换它)
正在尝试使用prepStatement插入到具有多个列的数据库中。当我试图将insert插入准备好的语句时,忽略无效数字(替换为Null)并插入有效数字,我希望语句能够适应C# prepared语句中出错(插入到无效变量上的stopping中,我想用NULL替换它),c#,mysql,validation,prepared-statement,C#,Mysql,Validation,Prepared Statement,正在尝试使用prepStatement插入到具有多个列的数据库中。当我试图将insert插入准备好的语句时,忽略无效数字(替换为Null)并插入有效数字,我希望语句能够适应 string prepStatement = "INSERT INTO outright_data.sample (`date`,`last`, `lastqty`) VALUES(@date @last, @lastqty)"; _prepStmt.CommandText =
string prepStatement = "INSERT INTO outright_data.sample (`date`,`last`, `lastqty`) VALUES(@date @last, @lastqty)";
_prepStmt.CommandText = prepStatement;
if (frun)
{
_prepStmt.Parameters.AddWithValue("@date", datetime_var);
_prepStmt.Parameters.AddWithValue("@last", last_var);
_prepStmt.Parameters.AddWithValue("@lastqty", lastQty_var);
_prepStmt.Prepare();
frun = false;
}
else
{
_prepStmt.Parameters["@date"].Value = datetime_var;
_prepStmt.Parameters["@last"].Value = last_var;
_prepStmt.Parameters["@lastqty"].Value = lastQty_var;
}
i++;
_counter += _prepStmt.ExecuteNonQuery();
假设mySQL表的lastQty
列中不接受lastQty\u var变量(但datetime\u var和last\u var被接受到它们的列中)。执行时,它会引发异常并停止代码。是否有办法在数据库中插入其他值并用NULL替换无效值(lastQty\u var)
我尝试使用is
验证该变量(问题是,该变量是C#上的双精度变量,但在我的双精度列中不被接受,因此在C#types中验证没有多大帮助)
我希望避免大型验证结构,因为速度在整个过程中非常重要
有什么建议吗
谢谢
托马斯试试这个解决方案
如果execute失败,那么您正试图满足它需要正确运行的要求第一个值和第二个值之间缺少逗号基本上您想验证值是否为双精度?如果发生了插入?感谢您对缺少逗号的警告,但这只是一个复制/粘贴错误,在代码中没有问题。是的,我想验证,但我始终想插入,无效值将替换为NULLHi,感谢您的回复。这个线程不太适合我要做的事情,我希望查询总是运行,检测无效的输入字段(一个字段接一个字段),并用NULL替换它们。嗯。。。还有一件事,让我们假设您将实现您的目标,并且能够将坏值设置为“null”,那么如果字段不允许null呢?如果我在C#程序中进行验证,它可能会允许,但由于速度是关键,我想知道mysql是否能够按照我所想的方式处理这种类型的异常(并解释). 否则,我需要每秒验证7*200个值,这可能会对程序造成很大影响。。。