Announcement

Collapse
No announcement yet.

[HELP] update giá trị null vào database

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C#] [HELP] update giá trị null vào database

    Ở đây Mình muốn khi click vào button thì các giá trị như LanMot,LanHai,LanBa, khi mình không điền gì nó sẽ tự động trả về giá trị null trong databasem
    Ở đây mình dùng SQL 2005
    mong các bạn giúp đỡ

    Code:
      private void button1_Click(object sender, EventArgs e)
            {
                SqlConnection con = new SqlConnection();
                con.ConnectionString = KetNoi.str;
                con.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                string TenMonHoc;
                TenMonHoc = comboBox1.SelectedItem.ToString();
                cmd.CommandText = "SELECT * FROM MonHoc WHERE TenMonHoc=N'" + TenMonHoc + "'";
                SqlDataReader rd;
                rd = cmd.ExecuteReader();
                DataTable td = new DataTable();
                td.Load(rd);
                string MaMonHoc = td.Rows[0][0].ToString();
                double KiemTra;
                KiemTra = Convert.ToInt16(txtKiemTra.Text);
                double ChuyenCan;
                ChuyenCan = Convert.ToInt16(txtChuyenCan.Text);
                double LanMot;
                LanMot = Convert.ToInt16(txtLan1.Text);
                double LanHai;
                LanHai = Convert.ToInt16(txtLan2.Text);
                double LanBa;
                LanBa = Convert.ToInt16(txtLan3.Text);
    
                cmd.CommandText = "INSERT INTO KetQuaHocTap VALUES('" + MaMonHoc + "','" + SinhVien_ID + "'," + ChuyenCan + "," + KiemTra + "," + LanMot + "," + LanHai + "," + LanBa + ")";
                cmd.ExecuteNonQuery();
                con.Close();
                MessageBox.Show("Thêm Dữ Liệu Thành Công !");
                this.Close();
                frm_KetQuaHocTap frm = new frm_KetQuaHocTap(SinhVien_ID);
                frm.Show();

  • #2
    Bạn sửa lại dòng này thử:
    Code:
    cmd.CommandText = "INSERT INTO KetQuaHocTap VALUES('" + MaMonHoc + "','" + SinhVien_ID + "'," + ChuyenCan + "," + KiemTra + "," + LanMot=="" ? "NULL" :LanMot + "," + LanHai=="" ? "NULL" :LanHai + "," + LanBa=="" ? "NULL" :LanBa+ ")";

    Comment


    • #3
      Không được bạn ạ, nó báo lỗi "Input string was not in a correct format"

      Comment


      • #4
        Lúc khai báo các trường trong DB đừng chọn NOT NULL property

        Comment


        • #5
          mình đánh dấu vào allow nulls rồi bạn ạ

          Comment


          • #6
            thì bỏ dấu tick thôi chứ có gì đâu
            nói chung là trường của bạn có bắt buộc là không được null hay không thôi mà
            Originally posted by adam View Post
            mình đánh dấu vào allow nulls rồi bạn ạ

            Comment


            • #7
              vẫn không được bạn ạ, mình nghĩ là dùng câu lệnh trong C# thôi, nhưng mình không biết cách
              up tiếp xem có cách giải quyết không

              Comment


              • #8
                Cho cái if đi bạn , Khi bạn INSERT INTO rồi bạn viết các trường thêm vào , nếu bạn quy định LanMot,LanHai,LanBa là kiểu số (int float double decimal bit byte ....) thì dòng này của bạn
                Code:
                cmd.CommandText = "INSERT INTO KetQuaHocTap VALUES('" + MaMonHoc + "','" + SinhVien_ID + "'," + ChuyenCan + "," + KiemTra + "," + LanMot + "," + LanHai + "," + LanBa + ")";
                Nếu txtLan1.text="" hay txtLan2.text="" hay txtLan3.text="" thì nó sẽ mang giá trụ là null nhưng kiểu số không chưa null mà chỉ chứa từ 0->9
                Nghĩa là không phải bản INSERT INTO hết giá trị vào cái bảng mà bạn ghi là chỉ INSERT vào column nào thôi
                Tốt nhất là bạn dùng if để soát cái lỗi này
                if(txtLan1.Text!="") thì có thêm cột LanMot ở INSERT INTO (......,LanMot,...)
                tương tự vậy với txtlan2 và 3

                Comment

                LHQC

                Collapse
                Working...
                X