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

本文关键字:常工作 工作 不能 查询 插入 SQL 为什么 | 更新日期: 2023-09-27 18:07:53

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

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

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

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

我正在使用SQL Server管理工作室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')

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

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

尝试在insert中指定列:

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

同样,使用参数代替字符串连接。这样做的原因已经在这里的大约20万个问题中得到了很好的记录。

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

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

您没有提供足够的细节来提供帮助。至少,如果你知道:

  • 有错误吗?
  • 是你张贴在一个try/catch块的代码片段?
  • 你插入的变量是什么数据类型?
  • 您正在使用未提交的事务吗?

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