2012-06-20 397 views
-5

我已经创建了一个数据库,列名为姓氏,ID,日期如果到达和今天的日期。并且都是nchar()的数据类型;我有ID作为主键现在在我已经进入网页的价值和点击提交,但出现错误为在Sql Server中违反PRIMARY KEY约束条件

违反PRIMARY KEY约束:无法在对象'dbo.Accomdation'中插入重复键。 该声明已被终止。

代码被给定为

SqlConnection con = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=Accomdation;Integrated Security=True"); 
    con.Open(); 

    string f = TextBox1.Text; 
    string g = TextBox5.Text; 
    string d = DropDownList1.Text; 
    string s = TextBox1.Text; 
    string a = TextBox2.Text; 
    string h = TextBox7.Text; 
    string k = TextBox6.Text; 
    string u = TextBox8.Text; 
    string sql=("INSERT INTO Accomdation ([First Name], [LAst Name], Gender, [UHCL ID], [Date OF arrival], [FLight No], Email)VALUES  ('tya', 'tya', 'tya', 'tya', 'tya', 'tya', 'tya')"); 

    SqlCommand sw = new SqlCommand(sql,con); 
+2

请看看你的INSERT语句。 – JonH

+1

首先,如果您的插入重复包含值'tya',您应该能够看到问题。其次,您需要学会实际**阅读错误消息的单词**,并且您完全可以看到*这里存在的问题。 –

+0

@KenWhite你真的希望他花费他的大脑而不是打扰别人吗?来吧 - 只要许多程序员是他的水平,我可以打电话给休息日费率。 – TomTom

回答

1

是ID(主键)的身份?它需要。主键是一个复合聚集索引/如何? 这个错误意味着你正试图在已经存在的PK中插入一些东西。

从表中选择并查看存在。尝试运行管理工作室中的插入语句,使用不同的值。

2

由于您没有为ID插入值,因此应将该ID设置为自动增量而不为空。

像下面的东西。

create table Accomdation(
    AccID int not null identity(1,1) primary key, 

    define other columns 

) 

,并且使用带有SqlCommand的参数化查询,这里是示例代码

string commandText = "INSERT INTO Accomdation ([First Name], [LAst Name]) VALUES (@FirstName, @LastName)"; 
using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    SqlCommand command = new SqlCommand(commandText, connection); 
    command.Parameters.AddWithValue("@FirstName", firstName); 
    command.Parameters.AddWithValue("@LastName", lastName); 

    try 
    { 
     connection.Open(); 
     command.ExecuteNonQuery(); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 
相关问题