-1

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

3 回答 3

0

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

  query = "CREATE TABLE `"+ txtboxName.Text + "`(size int(5))";
于 2013-05-04T08:40:20.823 回答
0

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

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();
        }
    }
}
于 2013-05-04T08:32:38.823 回答
0

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

于 2013-05-04T09:56:05.060 回答