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