为什么我插入表行的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语句而不是执行它并将其复制/粘贴到SSMS中,会发生什么情况?
尝试在insert中指定列:
insert into EventList(col1, col2) values (...)
同样,使用参数代替字符串连接。这样做的原因已经在这里的大约20万个问题中得到了很好的记录。
由于我在评论中指出的缓存/刷新错误,不要使用Open Table。只需在查询窗口中重新运行相同的查询:
SELECT * FROM dbo.EventList
-- WHERE EventId = <EventId>
;
您没有提供足够的细节来提供帮助。至少,如果你知道:
- 有错误吗?
- 是你张贴在一个try/catch块的代码片段?
- 你插入的变量是什么数据类型?
- 您正在使用未提交的事务吗?
最后,表是如何排序的?是否有索引,包括主键?如果您在Management Studio中基于eventId
中的值运行SELECT,您看到记录了吗?