2016-03-07 85 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文档。