2012-06-20 149 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); 
    } 
} 
相關問題