我对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')
答案 0 :(得分:2)
有任何错误吗?如果您输出SQL语句而不是执行它并将其复制/粘贴到SSMS中会发生什么?
尝试指定插入中的列:
insert into EventList(col1, col2) values (...)
此外,使用参数而不是字符串连接。这样做的原因已经在大约200000个问题中得到了很好的记录。只需搜索SQL注入。
答案 1 :(得分:1)
您还没有真正提供足够的细节来提供帮助。至少,了解一下会很有帮助:
最后,表格是如何排序的?是否有任何索引,包括主键?
如果您根据eventId
中的值在Management Studio中运行SELECT,您会看到记录吗?
答案 2 :(得分:1)
由于我在评论中指出的缓存/刷新错误,请不要使用Open Table。只需在查询窗口中重新运行相同的查询:
SELECT * FROM dbo.EventList
-- WHERE EventId = <EventId>
;