2016-03-07 48 views
0

我需要將我的代碼放在「Class_1」中,實際上有3個評分列(Score_1,Score_2,Score_3),因爲我正在構建的應用程序需要數據庫記錄最近三次輸入的分數。代碼的問題是,每次添加數據都會創建一個新條目,因此我需要程序執行的操作是檢查First_Name和Last_Name是否存在於另一個條目中,如果是,則更新該條目,那麼我想要做的是檢查score_1是否存在值,當然如果這是真的,跳過score_1並將數據輸入到score_2中,但我對C#完全陌生,所以在這裏的任何幫助將非常感謝!謝謝!C#更新條目並在SQL數據庫中傳遞列

if(inpClassNumber.Text == "Class 1") 
{ 
    con = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Program Files (x86)\Flux Infusion\Projects\Primary School Quiz System\Primary School Quiz System\Scores.mdf; Integrated Security = True"); 
    con.Open(); 
    cmd = new SqlCommand("INSERT INTO Class_1 (First_Name,Last_Name,Score_1) VALUES (@First_Name,@Last_Name,@Score)", con); 
    cmd.Parameters.AddWithValue("@First_Name", txtFirstName.Text); 
    cmd.Parameters.AddWithValue("@Last_Name", txtLastName.Text); 
    cmd.Parameters.AddWithValue("@Score", lblScore.Text); 
    cmd.ExecuteNonQuery(); 
} 
+0

您運行的是哪個版本的SQL Server? – EduardoCMB

回答

0

如果您正在運行SQL Server 2008或更高版本,您可以使用一個MERGE TSQL:

MERGE Class_1 AS target 
    USING (SELECT @First_Name, @Last_Name, @Score) AS source (fName, lName, score) 
    ON (target.First_Name = source.fName and target.Last_Name = source.lName) 
    WHEN MATCHED THEN 
     UPDATE SET 
      Score_1 = @Score, 
      Score_2 = Score_1, 
      Score_3 = Score_2 

WHEN NOT MATCHED THEN 
    INSERT (First_Name, Last_Name, Score_1) 
    VALUES (@First_Name, @Last_Name, @Score); 

上面的代碼保留列Score_1中最近的得分,Score_2中最近的第二個得分,依此類推。

Here是鏈接到TSQL文檔。