【发布时间】:2021-09-20 17:48:52
【问题描述】:
我有一个奇怪的问题,随机发生。
这是执行 MySQL 数据库处理程序的样子:
public class DBContext
{
List<MySqlParameter> _param = new List<MySqlParameter>();
string _connectionString = Startup._Configuration["ConnectionStrings:DefaultConnection"];
private void Execute(string strSQL, List<MySqlParameter> parameters)
{
using (MySqlConnection connection = new MySqlConnection(_connectionString))
{
connection.Open();
using (MySqlCommand command = new MySqlCommand(strSQL, connection))
{
foreach (MySqlParameter param in parameters)
command.Parameters.AddWithValue(param.ParameterName, param.Value);
command.ExecuteNonQuery();
}
}
}}
这是我的 GetMyActiveRentals(这里是随机抛出异常的地方)。有时当我以 4-5 倍的速度运行该方法时,我会注意到这一点。
public Void GetMyActiveRentals(int rentalId)
{
var sql = $"SELECT r.*, b.boxNo, b.categoryId, c.name, c.brand FROM Rentals r " +
$"INNER JOIN Box b LEFT JOIN Category c ON c.id=b.categoryId ON r.boxId=b.id " +
$"WHERE r.id = @id";
_param.Clear();
_param.Add(new MySqlParameter("@id", rentalId));
Execute(sql, _param);
}
抛出异常:
MySql.Data.MySqlClient.MySqlException: Fatal error encountered during command execution.
Parameter '@id' must be defined.
【问题讨论】:
-
什么是GetData?
-
这看起来一点也不像 Java。也许是 C#?
-
看来你在写 hql 查询。对吗?如果是 ypu 应该使用 : 而不是 @ 但正如 chrylis 所说,它不像 java 代码
-
抱歉,我错误地标记了“Java”,它是 C# .NET。
-
@nbk,对不起,我粘贴了错误的方法...调用方法应该是“Execute()”。我现在已经更新了代码。