【问题标题】:SqlCeCommand execution C#SqlCeCommand 执行 C#
【发布时间】:2017-04-19 03:35:06
【问题描述】:

我正在尝试务实地创建一个表,我的代码生成以下语法:

string x = "CREATE TABLE [test] ([ID] int NOT NULL,[Name] nvarchar(100) NOT NULL"

但每次我尝试运行代码时,都会生成以下异常。

我的代码:

   SQLCommand cmd = new SQLCommand(x,conn);
   cmd.ExecuteNonQuery();

我得到的异常:

解析查询时出错。 [令牌行号=1,令牌行偏移量=66,错误令牌=NULL]

我使用SqlCeConnection,如果这有区别的话,SqlCeCommand 用于执行。

我创建的表格不正确吗?

我的后端连接和执行如下所示:

public bool ExecuteSqlCommand(string sqlStr, IList<SqlCeParameter> parameters, SqlCeConnection conn)
{
   SqlCeCommand cmd = null;
   cmd = conn.CreateCommand();

   try
   {
      if (parameters != null)
      {
         foreach (SqlCeParameter param in parameters)
         {
             cmd.Parameters.Add(param);
         }
      }

      cmd.CommandText = sqlStr;

      int affectedRows = cmd.ExecuteNonQuery();

      bool DDLCommand = sqlStr.StartsWith("Drop ", StringComparison.OrdinalIgnoreCase);
      DDLCommand = DDLCommand || sqlStr.StartsWith("Delete ", StringComparison.OrdinalIgnoreCase);
      DDLCommand = DDLCommand || sqlStr.StartsWith("Insert ", StringComparison.OrdinalIgnoreCase);
      DDLCommand = DDLCommand || sqlStr.StartsWith("Update ", StringComparison.OrdinalIgnoreCase);
      DDLCommand = DDLCommand || sqlStr.StartsWith("Create ", StringComparison.OrdinalIgnoreCase);
      DDLCommand = DDLCommand || sqlStr.StartsWith("Alter ", StringComparison.OrdinalIgnoreCase);

      if (DDLCommand || affectedRows > 0)
         return true;
      else
         return false;
   }
   catch (Exception e)
   {
       SqlCeException sqlEx = e as SqlCeException;
   }

   if (cmd != null)
       cmd.Dispose();

   return false;
}

【问题讨论】:

  • 你打开连接了吗?
  • 如果您直接对数据库运行命令(例如在 SQL Server Management Studio 中),它是否有效?您似乎缺少右括号。
  • SQL 查询末尾似乎缺少“)”(字符串 x): string x = "CREATE TABLE [test] ([ID] int NOT NULL,[Name] nvarchar( 100) 非空)"; //
  • 那么你不应该使用SqlCeCommand吗?一个好的做法是只使用connection.CreateCommand()

标签: c# sql sql-server-ce


【解决方案1】:

你没有关闭你的(

string x = "CREATE TABLE [test] ([ID] int NOT NULL,[Name] nvarchar(100) NOT NULL)"

【讨论】:

    【解决方案2】:

    您的查询缺失)

    "CREATE TABLE [test] ([ID] int NOT NULL,[Name] nvarchar(100) NOT NULL)"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      相关资源
      最近更新 更多