c# - 准备好的语句中出现错误(INSERT INTO 在无效变量上停止,我想将其替换为 NULL)

标签 c# mysql validation prepared-statement

尝试使用 prepStatement 插入具有多列的数据库。当我尝试插入 INSERT INTO 准备好的语句时,我希望语句能够适应,忽略无效数字(用 Null 替换)并插入有效数字

            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_var 变量(但 datetime_var 和 last_var 被接受到它们的列中)列。当我执行时,它会引发异常并停止代码。有没有办法在数据库中插入其他值并用 NULL 替换无效值(lastQty_var)?

我尝试使用 is 验证变量(问题是,该变量在 C# 上是 double 型,但在我的双列中不被接受,因此在 C# 类型中验证没有太大帮助);

我想避免大型验证结构,因为速度在整个过程中非常重要。

有什么建议吗?

谢谢

托马斯

最佳答案

尝试这个解决方案 https://stackoverflow.com/a/19870942/7457316

如果执行失败,那么您正在尝试满足直接运行所需的内容

关于c# - 准备好的语句中出现错误(INSERT INTO 在无效变量上停止,我想将其替换为 NULL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41901641/

相关文章:

c# - 并行运行时 IronPDF 死锁

php - 在 Codeigniter 中进行查询

validation - 我们如何在 Yii 模型中为输入添加规则必须大于 0

php - 如何使用 jQuery 验证插件和 PHP 创建 google reCAPTCHA v2.0 验证

c# - 减少字典中的所有 int 值

c# - 识别所有打开的系统/特殊文件夹

C# : overriding Method with optional parameters & named parameters : Unexpected Result

python - MySQL 服务器已消失 ConnectionResetError 10054 Flask SqlAlchemy

php - MySQL 外键约束不被尊重/遵守

swift - 电子邮件验证器 RxSwift?