C# 用于在SQL表中插入记录的Insert函数工作正常,但用于更新记录的Update函数工作不正常

C# 用于在SQL表中插入记录的Insert函数工作正常,但用于更新记录的Update函数工作不正常,c#,sql,sql-server,insert,sql-update,C#,Sql,Sql Server,Insert,Sql Update,这些是我用来更新学生记录和在SQL数据库中插入学生记录的函数 我的第二个将值插入SQL表的函数“insertstudent”工作正常,并将值正确插入数据库表。但是第一个函数“updatestudent”没有更新数据库表中的值。它也没有提供任何错误。 那么我错在哪里呢 提前谢谢 检查以确保传递给更新函数的rollno是正确的。如果该命令没有抛出错误,则很可能它执行正确,并且没有更新任何内容,因为没有记录命中提供的rollno 在update函数的开头放一个断点,并检查提供的rollno值 另外,

这些是我用来更新学生记录和在SQL数据库中插入学生记录的函数

我的第二个将值插入SQL表的函数“insertstudent”工作正常,并将值正确插入数据库表。但是第一个函数“updatestudent”没有更新数据库表中的值。它也没有提供任何错误。 那么我错在哪里呢


提前谢谢

检查以确保传递给更新函数的rollno是正确的。如果该命令没有抛出错误,则很可能它执行正确,并且没有更新任何内容,因为没有记录命中提供的rollno

在update函数的开头放一个断点,并检查提供的rollno值


另外,您的insert语句中的卷号是“s”的子集,而在update中,它是单独提供的,您可能需要检查这是否正确。

使用参数的正确方式。您还需要处理连接和命令对象

 using (connection = new SqlConnection("connectionstring"))
    {
    using (command = connection.CreateCommand())
    {
    command.CommandText = "update student set FirstName= @FirstName  ,LastName= @LastName, YearOfAdmission= @YearOfAdmission, Branch=@Branch WHERE RollNo= @RollNo";

    command.Parameters.AddWithValue("@FirstName", stu.FirstName);
    command.Parameters.AddWithValue("@LastName", stu.LastName);
    command.Parameters.AddWithValue("@YearOfAdmission", stu.YearOfAdmission);
    command.Parameters.AddWithValue("@Branch", stu.Branch);
    command.Parameters.AddWithValue("@RollNo", stu.RollNo);

       connection.Open();

                    command.ExecuteNonQuery();
    connection.Close();
    }
    }

您应该使用命名参数,而不是连接sql字符串。请尝试捕获在update中生成的sql,并在Management studio中运行它,以查看它的功能。。看起来您的筛选器rollno不匹配。请确保将其切换到sql参数!如果你真的想看到这个问题,我会在那里设置一个断点,然后调试到那个点。然后检查你的命令,看看它在做什么。但是,是的,放弃这些代码,转而使用sql,这会让你的自我受到sql注入攻击。如果任何使用您的软件的人都懂一点sql,他们可以轻松地在您的文本框中输入自己的查询,并随意删除/更新/插入/弄乱您的数据。您应该使用SqlCommand.Parameters集合,如Cam Bruce所述。从安全角度来看,使用命名参数可以防止SQL注入。从易于使用的角度来看,您不需要自己进行字符串压缩,而且它的可读性更高。。非常感谢。
 using (connection = new SqlConnection("connectionstring"))
    {
    using (command = connection.CreateCommand())
    {
    command.CommandText = "update student set FirstName= @FirstName  ,LastName= @LastName, YearOfAdmission= @YearOfAdmission, Branch=@Branch WHERE RollNo= @RollNo";

    command.Parameters.AddWithValue("@FirstName", stu.FirstName);
    command.Parameters.AddWithValue("@LastName", stu.LastName);
    command.Parameters.AddWithValue("@YearOfAdmission", stu.YearOfAdmission);
    command.Parameters.AddWithValue("@Branch", stu.Branch);
    command.Parameters.AddWithValue("@RollNo", stu.RollNo);

       connection.Open();

                    command.ExecuteNonQuery();
    connection.Close();
    }
    }