为什么我的SQL查询不能插入表格行正常工作?

时间:2011-09-07 00:13:56

标签: c# sql sql-server-2005

我对C#和SQL相当新,所以这可能是一个非常容易回答的问题。

我试图通过C#代码向表(EventList)添加一行。我已经打开了我的SqlConnection没有任何问题,我知道我连接到正确的数据库,因为一些早期的代码正在查询其中一个表中的行并返回正确的密钥。

将行插入表中的SQL查询如下所示:

sqlCmd.CommandText =
    "insert into EventList values ('" +
    eventListIdentifier + "','" +
    eventId.ToString() + "')";
sqlCmd.ExecuteNonQuery();

我正在使用SQL Server Management Studio Express查看数据库中的表。运行上述查询后,我右键单击EventList表,然后点击Open Table

我没有看到根据上述调用添加新行。我有什么想法可能做错了吗?

更新1

我要插入的数据类型是:

eventListIdentifier (varchar(100), null)
eventId (varchar(8000), null)

我在SSMS中手动创建了相同的查询,如下所示:

insert into EventList(eventListIdentifier, eventId ) values('test', 'blah')

并说出以下内容:

(1 row(s) affected)

但是当我右键单击并打开它时,表中没有添加任何行。

更新2

根据@billinkc的要求输出System.Console.WriteLine(sqlCmd.CommandText);

insert into EventList(eventListIdentifier, eventId) values ('7/09/2011 10:43:55 AM','7')

3 个答案:

答案 0 :(得分:2)

有任何错误吗?如果您输出SQL语句而不是执行它并将其复制/粘贴到SSMS中会发生什么?

尝试指定插入中的列:

insert into EventList(col1, col2) values (...)

此外,使用参数而不是字符串连接。这样做的原因已经在大约200000个问题中得到了很好的记录。只需搜索SQL注入。

答案 1 :(得分:1)

您还没有真正提供足够的细节来提供帮助。至少,了解一下会很有帮助:

  • 有错误吗?
  • 您是否在try / catch块中发布了代码段?
  • 您要插入的变量是什么数据类型?
  • 您使用的是未提交的交易吗?

最后,表格是如何排序的?是否有任何索引,包括主键? 如果您根据eventId中的值在Management Studio中运行SELECT,您会看到记录吗?

答案 2 :(得分:1)

由于我在评论中指出的缓存/刷新错误,请不要使用Open Table。只需在查询窗口中重新运行相同的查询:

SELECT * FROM dbo.EventList
-- WHERE EventId = <EventId>
;