日期:2014-05-18  浏览次数:21150 次

C#读取.sql文件,自动建表的功能多出个\t 怎么解决呀?
这是执行sql文件的代码,但执行后会多出个\t 示例:CREATE TABLE [dbo].[tb_account] (\t[_id] [int] IDENTITY (1, 1) NOT NULL 造成语句执行不了,怎么才能让语句没有这个\t呢。  

  /// <summary> 
  /// 执行Sql文件 
  /// </summary> 
  /// <param name="varFileName"></param> 
  /// <param name="Conn"></param> 
  /// <returns></returns> 
  private bool ExecuteSqlFile(string varFileName, String Conn)
  {
  if (!File.Exists(varFileName))
  {
  return false;
  }

  StreamReader sr = File.OpenText(varFileName);

  ArrayList alSql = new ArrayList();

  string commandText = "";

  string varLine = "";

  while (sr.Peek() > -1)
  {
  varLine = sr.ReadLine();
  if (varLine == "")
  {
  continue;
  }
  if (varLine != "GO")
  {
  commandText += varLine;
  }
  else
  {
  alSql.Add(commandText);//但执行后会多出个\t 示例:CREATE TABLE [dbo].[tb_account] (\t[_id] [int] IDENTITY (1, 1) NOT NULL 造成语句执行不了,怎么才能让语句没有这个\t呢
  commandText = "";
  }
  }

  sr.Close();

  try
  {
  ExecuteCommand(alSql, Conn);
  }
  catch
  {
  return false;
  }

  return true;
  }

下面是sql语句。

CREATE TABLE [dbo].[tb_account] (
[_id] [int] IDENTITY (1, 1) NOT NULL ,
[_autoNum] [nvarchar] (22) COLLATE Chinese_PRC_CI_AS NULL ,
[_accountNum] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[_pass] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[_type] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[_user] [nvarchar] (25) COLLATE Chinese_PRC_CI_AS NULL ,
[_userDep] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[_depID] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[_zdy1] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[_zdy2] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[_zdy3] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[_zdy4] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[_inputUser] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[_inputUserName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[_owerUser] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[_owerUserName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[tb_account] ADD 
CONSTRAINT [PK_tb_accountNumberManage] PRIMARY KEY CLUSTERED 
(
[_id]
) ON [PRIMARY] 
GO

------解决方案--------------------
alSql.Add(commandText);//断点调试这个方法
------解决方案--------------------
执行后自动添加的吗?要是自动添加的应该没事啊……
------解决方案--------------------
(\t[_id] 你要这个\t干嘛?,把它去了不就行了,sql认识不了这个转义符