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