使用 LINQ 和 mysqlconnection 遇到致命错误
Fatal Error Encountered using LINQ and mysqlconnection
我是 c# 的新手,所以请提供任何帮助。我制作了一个简单的控制台代码来更新到 mysql 数据库,请放心,我的数据库已完成设置,App.config 已完成。现在,问题是当我 运行 测试我的代码时发生了这个错误。 "Fatal error encountered during command execution"
下面是我的代码:
class图书馆:
public class DBEntity
{
private MySqlConnection DBConnection { get; set; }
public string INSERT = "insert";
public string SELECT = "select";
public string UPDATE = "update";
public void Get_Connection(string ConnectionString)
{
DBConnection = new MySqlConnection(ConnectionString);
}
public void Close_Connection()
{
DBConnection.Close();
}
public void Query(string operation, string query, params object[] values)
{
try
{
DBConnection.Open();
switch (operation)
{
case "update":
try
{
using (MySqlCommand cmd = new MySqlCommand(query, DBConnection))
{
IEnumerable<string> tokens = query.Split(new char[] { ' ', '\'', ';', ',' }).Where(str => str.Contains('@'));
var zipTwoTokens = tokens.Zip(values, (token, vals) => cmd.Parameters.AddWithValue(token, vals)).ToList();
cmd.ExecuteNonQuery();
DBConnection.Close();
}
}
catch (MySqlException e)
{
DBConnection.Close();
Console.WriteLine(e.Message);
}
break;
default:
break;
}
}
catch (MySqlException)
{
}
}
}
主要class:
class Program
{
static void Main(string[] args)
{
DBEntity database = new DBEntity();
database.Get_Connection(ConfigurationManager.ConnectionStrings["MySQLConnection"].ConnectionString);
database.Query(database.UPDATE, "UPDATE RoyDB.Products SET Products.Name = @productName WHERE Products.ProductID = @product;", "Kayak", 1);
Console.Read();
}
}
现在,问题是当我 运行 测试我的代码时发生了这个错误。 "Fatal error encountered during command execution"
谁能帮帮我?我似乎没有得到错误的原因。
任何帮助都会很棒!谢谢!
您拆分查询以确定参数的方式不太正确。在本例中,它包括分号,因此您将获得名为 @productName
和 @product;
的参数。像这样在拆分字符串中添加分号:
IEnumerable<string> tokens =
query.Split(new char[] { ' ', '\'', ';'}).Where(str => str.Contains('@'));
此外,您需要实际强制调用 Zip
方法,因为 Linq 使用延迟执行。为此,在 zip 的末尾添加 ToList
:
var zipTwoTokens =
parameterToken.Zip(values, (prmtoken, vals) =>
cmd.Parameters.AddWithValue(prmtoken, vals)).ToList();
我是 c# 的新手,所以请提供任何帮助。我制作了一个简单的控制台代码来更新到 mysql 数据库,请放心,我的数据库已完成设置,App.config 已完成。现在,问题是当我 运行 测试我的代码时发生了这个错误。 "Fatal error encountered during command execution"
下面是我的代码:
class图书馆:
public class DBEntity
{
private MySqlConnection DBConnection { get; set; }
public string INSERT = "insert";
public string SELECT = "select";
public string UPDATE = "update";
public void Get_Connection(string ConnectionString)
{
DBConnection = new MySqlConnection(ConnectionString);
}
public void Close_Connection()
{
DBConnection.Close();
}
public void Query(string operation, string query, params object[] values)
{
try
{
DBConnection.Open();
switch (operation)
{
case "update":
try
{
using (MySqlCommand cmd = new MySqlCommand(query, DBConnection))
{
IEnumerable<string> tokens = query.Split(new char[] { ' ', '\'', ';', ',' }).Where(str => str.Contains('@'));
var zipTwoTokens = tokens.Zip(values, (token, vals) => cmd.Parameters.AddWithValue(token, vals)).ToList();
cmd.ExecuteNonQuery();
DBConnection.Close();
}
}
catch (MySqlException e)
{
DBConnection.Close();
Console.WriteLine(e.Message);
}
break;
default:
break;
}
}
catch (MySqlException)
{
}
}
}
主要class:
class Program
{
static void Main(string[] args)
{
DBEntity database = new DBEntity();
database.Get_Connection(ConfigurationManager.ConnectionStrings["MySQLConnection"].ConnectionString);
database.Query(database.UPDATE, "UPDATE RoyDB.Products SET Products.Name = @productName WHERE Products.ProductID = @product;", "Kayak", 1);
Console.Read();
}
}
现在,问题是当我 运行 测试我的代码时发生了这个错误。 "Fatal error encountered during command execution"
谁能帮帮我?我似乎没有得到错误的原因。
任何帮助都会很棒!谢谢!
您拆分查询以确定参数的方式不太正确。在本例中,它包括分号,因此您将获得名为 @productName
和 @product;
的参数。像这样在拆分字符串中添加分号:
IEnumerable<string> tokens =
query.Split(new char[] { ' ', '\'', ';'}).Where(str => str.Contains('@'));
此外,您需要实际强制调用 Zip
方法,因为 Linq 使用延迟执行。为此,在 zip 的末尾添加 ToList
:
var zipTwoTokens =
parameterToken.Zip(values, (prmtoken, vals) =>
cmd.Parameters.AddWithValue(prmtoken, vals)).ToList();