C#MySql参数化查询使long变为null

C#MySql参数化查询使long变为null,c#,mysql,parameterized,C#,Mysql,Parameterized,代码基于 错误是123456被视为空 消息=列“拍卖密钥”不能为空 我尝试更改my.ini中的“strict”设置,但没有任何区别 请提供帮助。好吧,您可以将参数添加到命令中,然后实例化一个新命令: cmd.Parameters.AddWithValue("@my_auc_id", 123456); cmd = new MySqlCommand(sqlInsertOrUpdateAuction, dbConnection); 如果这样做,该命令将不再具有@my_auc_id的值。请尝试切换这两

代码基于

错误是123456被视为空

消息=列“拍卖密钥”不能为空

我尝试更改my.ini中的“strict”设置,但没有任何区别


请提供帮助。

好吧,您可以将参数添加到命令中,然后实例化一个新命令:

cmd.Parameters.AddWithValue("@my_auc_id", 123456);
cmd = new MySqlCommand(sqlInsertOrUpdateAuction, dbConnection);
如果这样做,该命令将不再具有@my_auc_id的值。请尝试切换这两行:

cmd = new MySqlCommand(sqlInsertOrUpdateAuction, dbConnection);
cmd.Parameters.AddWithValue("@my_auc_id", 123456);

希望这能有所帮助。

您只需执行以下操作即可缓解问题:

using(var connection = new MySqlConnection(dbConnection))
{
     connection.Open();
     using(var command = new MySqlCommand(createTableQuery, connection))
     {
          command.ExecuteNonQuery();
     }

     using(var command = new MySqlCommand(insertOrUpdate, connection))
     {
          command.Parameters.Add("..", SqlDbType = SqlDbType.Int).Value = 123456;
          command.ExecuteNonQuery();
     }
}
请记住,
ExecuteNonQuery
如果成功运行,将返回零或一。另外,您可能需要手动指定
SqlDbType
。以避免错误地推断SQL。此外,这将正确地限定您的
MySqlCommand
,因此您可以正确地利用它进行查询


根据文档,它确实实现了
IDisposable
来利用
using
块。这可以确保您再次实例化
MySqlCommand

谢谢大家-在添加参数之前放置命令修复了它。
using(var connection = new MySqlConnection(dbConnection))
{
     connection.Open();
     using(var command = new MySqlCommand(createTableQuery, connection))
     {
          command.ExecuteNonQuery();
     }

     using(var command = new MySqlCommand(insertOrUpdate, connection))
     {
          command.Parameters.Add("..", SqlDbType = SqlDbType.Int).Value = 123456;
          command.ExecuteNonQuery();
     }
}