您好我有以下存储过程:
create procedure dbo.AddNewUser
(
@uName nvarchar(20),
@pass nvarchar(20),
@fName nvarchar(20),
@lName nvarchar(20)
)
AS
insert into [Users] (Username, Password, Firstname, Lastname)
values (@uName, @pass, @fName, @lName)
这是我桌子的代码:
CREATE TABLE [dbo].[Users] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Username] NCHAR (20) NOT NULL,
[Password] NCHAR (20) NOT NULL,
[Firstname] NCHAR (20) NOT NULL,
[Lastname] NCHAR (20) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
我的Windows窗体程序目前有4个文本框和1个按钮。我试图将文本框中的文本插入到我的数据库中。这是我点击事件的代码:
DatabaseConnectionDataContext dc = new DatabaseConnectionDataContext();
dc.AddNewUser(tbUsername.Text, tbPassword.Text, tbFirstname.Text, tbLastname.Text);
dc.SubmitChanges();
当我启动程序时,在文本框中输入一些数据并单击按钮将文本框中的数据插入到表中,但是当我再次启动程序并在文本框中输入一些数据时,将插入新数据在第一行而不是创建一个新行,旧数据被删除。任何人都可以建议为什么会这样?
答案 0 :(得分:0)
如果用户存在,您将错过检查,通常您会通过ID执行此操作。
using (var dc = new DatabaseConnectionDataContext()){
if (dc.Users.Any(o => o.Username== tbUsername.Text && o.Password == tbPassword.Text ...){
...
}else{dc.AddNewUser(tbUsername.Text, tbPassword.Text, tbFirstname.Text, tbLastname.Text);}
dc.SubmitChanges();
}
编辑:阅读了StefanoGermani的评论
你是否有机会在内存中运行ravenDb?