在mySQL中创建表时出错

时间:2013-05-04 08:21:41

标签: c# mysql

我尝试了一些你的建议,但仍然是同样的错误。 您的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();
            }
        }

3 个答案:

答案 0 :(得分:0)

您错过了表名与列定义之间的空间

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

sql injection ...不要使用内联参数。下面是我所知道的几乎没有最佳实践的示例代码。但是您不能使用表名参数。

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();
        }
    }
}

答案 1 :(得分:0)

我认为您打算使用反引号``来转义表名,而是使用单引号。

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

答案 2 :(得分:0)

我会尝试将转义序列添加到txtboxName.Text。可能有一些特殊字符会破坏您的SQL语句。