在mySQL中创建表时出错

本文关键字:出错 创建 mySQL | 更新日期: 2023-09-27 18:12:01

我尝试了你的一些建议,但仍然是同样的错误。你有一个错误在你的SQL语法;查看与MySQL服务器版本对应的手册,了解在第1行"' (size int(5))'"附近使用的正确语法

下面是我的代码:
            try{
            query = "CREATE TABLE @name (size int(5))";
            MySqlCommand cmd = new MySqlCommand(query, con);

            cmd.Parameters.Add("@name", MySqlDbType.VarChar, 30).Value = txtboxName.Text;
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            }
            catch (Exception)
        {
            throw;
        }
        finally
        {
            if (con.State == ConnectionState.Open)
            {
                con.Close();
            }
        }

在mySQL中创建表时出错

我认为您打算使用反引号' '来转义表名,但使用单引号代替。

  query = "CREATE TABLE `"+ txtboxName.Text + "`(size int(5))";

我会尝试添加转义序列到txtboxName.Text。有一些特殊的字符,可以打破你的SQL语句。

表名和列定义之间缺少空格

query = "CREATE TABLE "+ txtboxName.Text + " (size int(5))";
                                            |
                                            put space here

sql注入…不要使用内联参数。下面是我所知道的一些最佳实践的示例代码。但是不能对表名使用参数。

public void CreateTable(string tblName)
{
    using (var con = new MySqlConnection(MySqlConnectionString))
    {
        using (var cmd = new MySqlCommand(String.Format("CREATE TABLE {0} (size int(5))",tblName), con)
        {
            con.Open();
            cmd.ExecuteNonQuery();
        }
    }
}