为什么我收到一个错误的语法错误,而在c#中创建一个表

本文关键字:错误 一个 而在 创建 语法 为什么 | 更新日期: 2023-09-27 18:07:54

我正在尝试创建一个表的头是从一个CSV文件读取:

myConnection = new SqlConnection(cString);
myConnection.Open();
var lines = File.ReadLines(textBox1.Text);
List<string> readHeader = lines.ElementAt(0).Split(',').ToList();
string tab = "a123CSV";
readHeader.ToArray();
string exists = null;
try
{
   SqlCommand cmd = new SqlCommand("SELECT * FROM sysobjects where name = '" + tab + "'", myConnection);
   exists = cmd.ExecuteScalar().ToString();
}
catch (Exception ce)
{
   exists = null;
}
if (exists == null)
{
   int p;
   for (p = 0; p <= readHeader.Count; p++)
   {
      if (exists == null)
      {
         SqlCommand createTable = new SqlCommand("CREATE TABLE '" + tab + "' ([" + readHeader[p] + "] varchar(MAX))", myConnection);
         createTable.ExecuteNonQuery();
         exists = tab;
      }
      else
      {
         SqlCommand addcolumn = new SqlCommand("ALTER TABLE '" + tab + "' ADD [" + readHeader[p] + "] varchar(MAX)", myConnection);
         addcolumn.ExecuteNonQuery();
      }
   }
}

CSV文件的头是这样的:

"新产品导入","实体类型代码","替代新产品导入","雇主标识"号码(EIN)","提供商机构名称(合法业务)"名称)"、"提供商姓氏(法定名称)"、"提供商第一"提供商名称"、"提供商中间名"、"提供商名称前缀文本"

每当我运行我的应用程序时,我总是在这一行得到这个错误:

...
if (exists == null)
{
SqlCommand createTable = new SqlCommand("CREATE TABLE '" + tab + "' ([" + readHeader[p].Replace("'"", "") + "] varchar(MAX))", myConnection);
createTable.ExecuteNonQuery();
...
错误:

Incorrect syntax near `a123CSV`

如何解决这个错误?

为什么我收到一个错误的语法错误,而在c#中创建一个表

您需要用[]代替单引号转义表名,即:

"CREATE TABLE [" + tab + "] ([" + readHeader[p].Replace("'"", "") + "] varchar(MAX))"

这是因为您将TABLE_NAME包含在单引号中。使用这个,

SqlCommand createTable = new SqlCommand("CREATE TABLE " + tab + " ([" + readHeader[p].Replace("'"", "") + "] varchar(MAX))", myConnection);
相关文章: