1

これらは、学生レコードを更新し、SQL バッチベースに学生レコードを挿入するための私の関数です。

public void UpdateStudent(ref student stu, string rollno) //Update the values to corresponding roll number 'rollno'
        {
            try
            {
                connection.Open();  //I have already defined the connection and command
                command = new SqlCommand("update student set FirstName='"+stu.Firstname+"',LastName='"+stu.Lastname+"',YearOfAdmission="+stu.Yearofadmission+",Branch='"+stu.Branch+"' where RollNo='"+rollno+"'", connection); //Yearofadmission is int
                command.ExecuteNonQuery();

        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            if (connection != null)
                connection.Close();
        }
    }
public void insertstudent(ref student s)
        {            
            try
            {
                connection.Open();
                command = new SqlCommand("insert into student values('"+s.Rollno+"','"+ s.Firstname+"','"+s.Lastname+"',"+s.Yearofadmission+",'"+s.Branch+"','"+s.Password+"')", connection);                 
                command.ExecuteNonQuery();

            }
            catch (Exception)
            {
                throw;           
            }
            finally
            {
                if (connection != null)
                    connection.Close();
            }
        }

SQL テーブルに値を挿入する 2 番目の関数「insertstudent」は正しく機能し、値をデータベース テーブルに正しく挿入しています。しかし、最初の関数「生徒の更新」は、データベース テーブルの値を更新していません。エラーも発生していません。それで、私はどこが間違っていますか?


前もって感謝します!

4

2 に答える 2

0

パラメータを使用した正しい方法。また、接続オブジェクトとコマンド オブジェクトを破棄する必要があります。

 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();
    }
    }
于 2013-07-25T18:02:52.850 に答える
0

update 関数に渡された rollno が正しいことを確認してください。コマンドがエラーをスローしていない場合は、指定されたロール番号にレコードがヒットしないため、コマンドが正しく実行されて何も更新されない可能性が高いです。

update 関数の先頭にブレーク ポイントを置き、rollno の指定された値を確認します。

また、ロールNo. 挿入ステートメントでは「s」のサブセットですが、更新では個別に提供されているため、それが問題ないかどうかを確認する必要がある場合があります。

于 2013-07-25T17:59:06.177 に答える