Dr *_*her 0 c# sql database sql-server
每当我尝试在此表中插入一个新行时,它就会给我一个错误,即我无法修改该列(因为它是主键).所以我从查询中排除它,但它返回查询和列数不同.如何使用主键添加行?
这是要插入的代码:
var getmessages = new SqlCeCommand("Insert into chat values('" + txtSend.Text + "', '" + Environment.UserName + "', '" + user + "', '" + Environment.UserName + "', '" + DateTime.Now.ToShortTimeString() + "', '" + DateTime.Now.ToString() + "', '"+UID+"')", con);
Run Code Online (Sandbox Code Playgroud)
这是我通过查询添加的主键(因为它是对数据库的更新)...
alter table chat add c_id int identity primary key
Run Code Online (Sandbox Code Playgroud)
然后它抛出了我的错误 
如果我从插入查询中删除(UID)我得到此错误...

您需要准确地告诉SQL CE您要插入哪些列.
第一个问题不是因为它是主键.这是因为密钥是一个识别字段并为您自动生成.那么,让我们继续前进.
第二个问题只是您没有指定要插入的列.
插入应该看起来像:
insert into chat(field1, field2, field3) values('val1', 'val2', 'val3')
Run Code Online (Sandbox Code Playgroud)
注意字段名称.你必须把你在那里的实际字段名称.
也就是说,代码仍然非常糟糕.虽然上面的工作,你真的真的应该参数化你的查询.即使假设这个程序实际上从未真正发布到现实世界中,并且假设如果有人闯入它就会更少关心......以正确的方式做事情仍然是一种好习惯.哦..你不会有'标记问题..这会导致你的应用程序崩溃.