【发布时间】:2016-06-11 18:54:31
【问题描述】:
在我的 asp 网站中,我有一个注册表单,可以将数据发送到数据库。当用户输入他的数据时,提交后,会出现一个错误,上面写着:
违反主键约束“PK__UserInfo__737584F762CC8D9B”。无法在对象“dbo.UserInfo”中插入重复键。重复键值为 ()。 声明已终止。
这是代码:` signup.aspx.cs-
protected void submit_Click(object sender, EventArgs e)
{
string name = Request.Form["name"];
string email = Request.Form["email"];
string password = Request.Form["password"];
string fileName = "Database.mdf";
string sql = "INSERT INTO UserInfo VALUES('" + name + "','" + email + "','" + password + "')";
MyAdoHelper.DoQuery(fileName,sql);
}
MyAdoHelper.DoQuery-
public static void DoQuery(string fileName, string sql)
{
SqlConnection conn = ConnectToDb(fileName);
conn.Open();
SqlCommand com = new SqlCommand(sql, conn);
com.ExecuteNonQuery();
com.Dispose();
conn.Close();
}
MyAdoHelper.ConnectToDb-
public static SqlConnection ConnectToDb(string fileName)
{
string path = HttpContext.Current.Server.MapPath("App_Data/");
path += fileName;
//string path = HttpContext.Current.Server.MapPath("App_Data/" + fileName);
string connString = @"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Users\User\Documents\Visual Studio 2015\WebSites\WebSite6\App_Data\Database.mdf; Integrated Security = True";
SqlConnection conn = new SqlConnection(connString);
return conn;
}
有人可以帮助我吗? 谢谢!
【问题讨论】:
-
用户信息表中哪一列是主键?
-
我认为它的名字是 PRIMARY KEY CLUSTERED ([Name] ASC)
-
很酷,所以名称是您的主要列!所以你需要按照字符串 sql = "IF NOT EXISTS(SELECT 1 FROM USERINFO WHERE Name='"+name +"' ) BEGIN INSERT INTO UserInfo VALUES('" + name + "','" + email + "' ,'" + 密码 + "') END ";因为它将帮助您检查该名称是否已经存在于您的表中,它会避免您出现该错误!
-
转到管理工作室探索数据库打开您的数据库并探索表格,然后从下拉列表中右键单击您的表格,然后在打开时点击设计,然后上传该图像
标签: c# sql asp.net visual-studio-2015