【发布时间】: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