C# MySql.Data.MySqlClient 创建数据库失败
C# MySql.Data.MySqlClient Create database failed
我想使用 MySql.Data.MySqlClient 和准备好的语句创建一个新数据库。不幸的是,它向我显示一条错误消息“您的 SQL 语法有误”。使用“测试”作为方法的 iv_name 导入值。
执行“CREATE DATABASE IF NOT EXISTS 测试时;”直接在 mysql 服务器控制台中,它可以正常工作。在@dbname 左右添加“'”时,将在我的mysql 服务器中创建一个名为@dbname 的数据库。
public void CreateDatabase(string iv_name)
{
MySqlCommand lo_cmd = new MySqlCommand("CREATE DATABASE IF NOT EXISTS @dbname;", this._conn);
lo_cmd.Prepare();
lo_cmd.Parameters.AddWithValue("@dbname", iv_name);
lo_cmd.ExecuteNonQuery();
}
您可以在此处找到调试过程的屏幕截图
您不能在数据定义 SQL 语句中使用参数,例如 CREATE TABLE。使用字符串连接创建这样的语句。
对用户提供的 table 名称要非常小心。避免标点符号和保留字,如“select”和“table”。最好的办法是拒绝任何包含 _
以外的标点符号的用户输入,并在用户输入前加上 t_
之类的前缀。于是你拒绝了table;droptable
,把mytable
变成了t_mytable
。
我想使用 MySql.Data.MySqlClient 和准备好的语句创建一个新数据库。不幸的是,它向我显示一条错误消息“您的 SQL 语法有误”。使用“测试”作为方法的 iv_name 导入值。
执行“CREATE DATABASE IF NOT EXISTS 测试时;”直接在 mysql 服务器控制台中,它可以正常工作。在@dbname 左右添加“'”时,将在我的mysql 服务器中创建一个名为@dbname 的数据库。
public void CreateDatabase(string iv_name)
{
MySqlCommand lo_cmd = new MySqlCommand("CREATE DATABASE IF NOT EXISTS @dbname;", this._conn);
lo_cmd.Prepare();
lo_cmd.Parameters.AddWithValue("@dbname", iv_name);
lo_cmd.ExecuteNonQuery();
}
您可以在此处找到调试过程的屏幕截图
您不能在数据定义 SQL 语句中使用参数,例如 CREATE TABLE。使用字符串连接创建这样的语句。
对用户提供的 table 名称要非常小心。避免标点符号和保留字,如“select”和“table”。最好的办法是拒绝任何包含 _
以外的标点符号的用户输入,并在用户输入前加上 t_
之类的前缀。于是你拒绝了table;droptable
,把mytable
变成了t_mytable
。