从文本框名称创建表时语法不正确

时间:2016-03-03 08:32:21

标签: c# mysql sql

我试图根据textbox1中给出的名称创建一个表。我在以下代码中遇到错误:

  

Ramesh'附近的语法不正确。

此处Ramesh是文本框中的值。

string Customername = Textbox1.text 
SqlCommand cmd7 = new SqlCommand("CREATE TABLE '" + CustomerName + "' (ItemCode int,Quantity int,PricePerQuantity int,Brand char(50),Discount int , DateTime datetime)",connection

3 个答案:

答案 0 :(得分:3)

您的表名不需要单引号。

SqlCommand cmd7 = new SqlCommand("CREATE TABLE " + CustomerName + " (ItemCode int,Quantity int,PricePerQuantity int,Brand char(50),Discount int , DateTime datetime)",connection);

但奇怪的是,不要将SqlCommand用于MySQL。使用MySqlCommand及相关课程。

另外我会说使用参数化查询,但是因为你不能参数化列名,看起来你把它作为输入,使用强验证或使用白名单然后你把它在你的查询中。

您可以阅读:The BobbyTables culture

答案 1 :(得分:1)

从查询中的表名旁边删除'

string Customername = Textbox1.text 
SqlCommand cmd7 = new SqlCommand("CREATE TABLE " + CustomerName + " (ItemCode int,Quantity int,PricePerQuantity int,Brand char(50),Discount int , DateTime datetime)",connection

答案 2 :(得分:0)

错误的直接原因是您不应将表名放入撇号中。像这样:

// put IDisposable into using
using (SqlCommand cmd7 = new SqlCommand(
  // Keep SQL readable; "$" - C# 6.0 feature
  $@"CREATE TABLE {Textbox1.text}(
       ItemCode int,
       Quantity int, 
       PricePerQuantity int,
       Brand char(50),
       Discount int, 
       DateTime datetime)", 
  connection)) {

  cmd7.ExecuteNonQuery(); // execute and create the table
}