JDBC 08. Nên sử dụng PreparedStatement thay thế cho Statement khi dùng JDBC để tương tác CSDL

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ม.ค. 2025

ความคิดเห็น • 73

  • @nguyenquanghau7158
    @nguyenquanghau7158 2 ปีที่แล้ว +2

    cảm ơn thầy rất rất nhiều, em cảm thấy may mắn vì đã được học thầy. Em chúc thầy và mọi người đã đang và chưa xem video này có năm 2023 tuyệt vời, đạt được những mục tiêu mình đặt ra. Một lần nữa em xin cảm ơn thầy rất là nhiều luôn ạ.

  • @vutranxuan5731
    @vutranxuan5731 8 หลายเดือนก่อน

    Thực sự ah làm video, truyền đạt rất tâm huyết, cẩn thận. Đặt mình vào vị trí của người học nên hiểu được những khó khăn của người học gặp phải từ đó có những hướng tiếp cận dễ hiểu. Cảm ơn anhhhh rất nhiều!!!

  • @huuquang_0106
    @huuquang_0106 7 หลายเดือนก่อน

    cảm ơn anh nhiều ạ , video dễ hiểu , dễ học và truyền cảm hứng cho người mới bắt đầu như bọn em , +1 respect ❤

  • @deriubong02
    @deriubong02 5 หลายเดือนก่อน

    cảm ơn thầy vì những bài giảng chỉnh chu và những chia sẻ hưu ích 😍😍

  • @thybaochau
    @thybaochau ปีที่แล้ว

    Xin cảm ơn anh rất nhiều ạ. Thật khó để tìm ra một khóa học kỹ càng như thế này mà lại miễn phí. Nhờ anh mà đã hiểu về sơ SQL Injection. Chúc anh sức khỏe và mãi nhiệt huyết ạ.

  •  2 ปีที่แล้ว

    Bài giảng của anh rất hay, dễ hiểu và chi tiết. Em xin được mời anh cốc cafe để thay cho lời cảm ơn chân thành :33

  • @ninle3008
    @ninle3008 2 หลายเดือนก่อน

    thầy chia sẻ rất dễ hiểu, cám ưn thầy ạ

  • @tienganhhoc2218
    @tienganhhoc2218 ปีที่แล้ว

    những người thực sự cần sẽ cần đấy, cứ làm mà tích công đức, không vô ích đâu ^_^

  • @khanhtranphuc5193
    @khanhtranphuc5193 ปีที่แล้ว

    mong anh tiếp tục ạ, những bài học của anh rất quý giá ạ

    • @TITVvn
      @TITVvn  ปีที่แล้ว

      Chúc bạn học tốt.

  • @tranngocnhi3789
    @tranngocnhi3789 2 ปีที่แล้ว

    bài giảng rất dễ hiểu và bổ ích. Cám ơn TITV rất nhiều ạ!

  • @lethanh4533
    @lethanh4533 ปีที่แล้ว

    Cảm ơn thầy nhiều nhờ thầy mà cuộc sống sinh viên của e đỡ vất vả hơn rất nhiều🤧

  • @SBien_
    @SBien_ 10 หลายเดือนก่อน

    Qua hay, cam on anh rat nhieu.Chuc anh that nhieu suc khoe va chia se nhieu bai hoc bo ich

  • @ducnguyenminh5942
    @ducnguyenminh5942 2 ปีที่แล้ว

    mình đã học xong video này. Cám ơn bạn rất nhiều

  • @tienle5013
    @tienle5013 2 ปีที่แล้ว

    tuyệt vời quá a ơi e luôn dõi theo a qua mọi bài và nỗ lực hết mình

  • @hqchannel4031
    @hqchannel4031 หลายเดือนก่อน

    Bài giảng quá hay ạ

  • @QuyetPhamHuy.
    @QuyetPhamHuy. ปีที่แล้ว

    Triệu like, quá hay luôn. Thanks ad nhiều 🥰

  • @aicoivlogs8899
    @aicoivlogs8899 2 ปีที่แล้ว +1

    Cảm ơn anh đã chia sẻ kiến thức này !

  • @Mrminhthuan1612
    @Mrminhthuan1612 ปีที่แล้ว

    cảm ơn thầy có bài chia hay và nhiệt tình.

  • @NhatMinh-sh4qv
    @NhatMinh-sh4qv 2 ปีที่แล้ว

    mong anh vẫn giữ nhiệt huyết và tạo ra những bài học hay như này ạ

  • @HuyNguyen-cb9uo
    @HuyNguyen-cb9uo ปีที่แล้ว

    Anh dạy hay quá anh ơi

  • @HuyNguyen-cb9uo
    @HuyNguyen-cb9uo ปีที่แล้ว

    Anh làm cái video dài 42 phút, em học xong thực hành mất 2 ngày là khoảng 16 tiếng, viết hơn 1000 dòng code, viết xong đoạn dưới thì quên luôn đoạn trên mình viết cái gì.
    Xong rồi làm một đống pivot để test lỗi, chỉ có ăn với ngồi fix lỗi mất thêm mấy tiếng nữa 😁😁😁
    Thấm thía nghề lập trình 🤣🤣🤣

  • @PhongNguyen-km2lk
    @PhongNguyen-km2lk 2 ปีที่แล้ว

    Dạ bài học bổ ích thật ạ! Em cảm ơn Thầy ạ!

    • @TITVvn
      @TITVvn  2 ปีที่แล้ว

      Mời bạn tham gia và gửi câu hỏi tại nhóm facebook.com/groups/titv.vn nếu có thành viên trong nhóm biết câu trả lời họ sẽ sẵn sàng giúp đỡ bạn. Đăng ký kênh và chia sẻ cho các bạn khác cùng học nhé. Chúc bạn học thật tốt.

  • @diennguyendhv
    @diennguyendhv 2 ปีที่แล้ว

    Tuyệt vời quá TITV

  • @phamtienduceng
    @phamtienduceng ปีที่แล้ว

    Bài giảng rất hay ạ

  • @ha_nguyen_146
    @ha_nguyen_146 2 ปีที่แล้ว

    thầy dạy hay lắm ạ, em cảm ơn thầy rất rất nhiều :3

  • @thoaiuc
    @thoaiuc ปีที่แล้ว

    cảm ơn anh ạ

  • @tuphamson4322
    @tuphamson4322 2 ปีที่แล้ว

    Rất hay và bổ ích

  • @cuonganime.5733
    @cuonganime.5733 ปีที่แล้ว

    cam on anh nhieu

  • @lethanhtho8714
    @lethanhtho8714 ปีที่แล้ว

    cảm ơn thầy

  • @honglinh154
    @honglinh154 2 ปีที่แล้ว

    cám ơn thầy Tùng

  • @ha_nguyen_146
    @ha_nguyen_146 2 ปีที่แล้ว

    đỉnh thật sự ạ, :3

  • @hgbaodev
    @hgbaodev 2 ปีที่แล้ว

    Em cảm ơn anh rất nhiều ạ

    • @TITVvn
      @TITVvn  2 ปีที่แล้ว

      Cảm ơn bạn. Chúc bạn học thật tốt.
      Mời bạn tham gia và gửi câu hỏi tại nhóm facebook.com/groups/titv.vn , thành viên trong nhóm biết câu trả lời họ sẽ sẵn sàng giúp đỡ bạn.
      Đăng ký kênh và chia sẻ cho các bạn khác cùng học nhé.

  • @trinhngocminh1378
    @trinhngocminh1378 2 ปีที่แล้ว

    mong thầy ra thêm nhiều bài về jdbc nữa

  • @nguyenduy2819
    @nguyenduy2819 2 ปีที่แล้ว

    Hay quá anh ơi

    • @TITVvn
      @TITVvn  2 ปีที่แล้ว

      Mời bạn tham gia và gửi câu hỏi tại nhóm facebook.com/groups/titv.vn nếu có thành viên trong nhóm biết câu trả lời họ sẽ sẵn sàng giúp đỡ bạn. Đăng ký kênh và chia sẻ cho các bạn khác cùng học nhé. Chúc bạn học thật tốt.

  • @cejay2064
    @cejay2064 ปีที่แล้ว

    thầy cho e hỏi TYPE_SCROLL_INSENSITIVE trong statement của java là gì vậy thầy, e có tìm hiểu thì nó là con trỏ tới lùi trong đối tượng là sao ạ

  • @footballplus3996
    @footballplus3996 10 หลายเดือนก่อน

    mình chỉ cần làm cái này cho user và pass thôi hay có cần làm cách này cho các thuộc tính khác luôn nhỉ

  • @ThanhTa-xg7jj
    @ThanhTa-xg7jj ปีที่แล้ว

    a có thể làm cái hàm public ArrayList selectByCondition(String condition) được k ạ, e thử nhiều cách mà ko ngăn nổi sql injection

  • @Le_Minh_Tien
    @Le_Minh_Tien ปีที่แล้ว

    Dạ.. Hiện tại e làm đồ án kết nối sql vs java swing ạ... E đang có vấn đề là e tạo một cái bảng lophoc : malop, tenlop, soluongtoida. Và bảng sinhvien: msv,,hoten,... E muốn đẩy vào jtable :msv, hoten, tenlop,soluongtoida... Thì phải group by xong mình phải tạo cái class sinhvien_lophoc để tạo thuộc tính cho nó hay sao ạ.... E nghĩ là như vậy ạ

  • @vanhen008
    @vanhen008 ปีที่แล้ว

    ❤❤❤❤❤❤❤❤❤❤❤❤❤❤

  • @vanphuco8770
    @vanphuco8770 3 หลายเดือนก่อน

    Cái phím tăt Find/Replace là phím nào anh ơi ? em thử Ctrl+Shift+R mà không được. Thanks!

    • @biennguyen406
      @biennguyen406 3 หลายเดือนก่อน

      Ctrl+F bro ơi

    • @vanphuco8770
      @vanphuco8770 3 หลายเดือนก่อน +1

      @@biennguyen406 Ctrl+F chỉ Find thôi! Chắc do phiên bản Ecipse của mình!

  • @tuanminhphung5385
    @tuanminhphung5385 ปีที่แล้ว

    Anh ơi, anh có thể ra thêm video nói về kết nối giữa SQL Server và Intellij đi ạ

  • @TuNguyen-nq1df
    @TuNguyen-nq1df ปีที่แล้ว

    😍

  • @unsamsam9777
    @unsamsam9777 2 ปีที่แล้ว

    Thank sir

  • @HuyNguyen-cb9uo
    @HuyNguyen-cb9uo ปีที่แล้ว

    Em sợ không học kịp Python để học khóa dạy zoom của anh vào cuối tháng, bận quá anh ơi😨😨😨

  • @baohoang2570
    @baohoang2570 2 ปีที่แล้ว

    Cám ơn Thầy rất nhiều! Thầy có link hay các đề bài tập nâng cao về java tương tác với csdl không ạ?

  • @luannguyen-xs7wv
    @luannguyen-xs7wv 2 ปีที่แล้ว

    chỉ sử dụng class PreparedStatement cho cau query SQL " select * from table name " hay tất cả insert,delete,update đều sử dụng hay sao Thầy?

    • @TITVvn
      @TITVvn  2 ปีที่แล้ว +1

      Xem hết video đi bạn.

    • @luannguyen-xs7wv
      @luannguyen-xs7wv 2 ปีที่แล้ว

      @@TITVvn tks Anh em đã rõ ạ

  • @STPCTGAMING
    @STPCTGAMING ปีที่แล้ว +1

  • @tuanlenv1683
    @tuanlenv1683 ปีที่แล้ว

    lấy code ở đâu vậy anh >Tại bữa ttrc em đang truy cập code bình thường giwof đăng nhập vào k thấy code đâu

  • @tuleotopscipt5542
    @tuleotopscipt5542 2 ปีที่แล้ว

    hay

  • @TranQuocKhanhQP
    @TranQuocKhanhQP ปีที่แล้ว

    sao em làm như thầy mà bị lỗi này nhỉ check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?,?,?,?)' at line 1

    • @vanhieule9248
      @vanhieule9248 ปีที่แล้ว

      giống mình là nó bị sao nhỉ

    • @CuongPhan-ds6md
      @CuongPhan-ds6md 11 หลายเดือนก่อน

      PreparedStatement pstm = cnn.prepareStatement(sql);

      pstm.setString(1, t.getUserName());
      pstm.setString(2, t.getPassWord());
      pstm.setString(3, t.getHoTen());

      rs = pstm.executeUpdate();
      không truyền sql vào excecuteUpdate();

    • @CuongPhan-ds6md
      @CuongPhan-ds6md 11 หลายเดือนก่อน

      @@vanhieule9248 PreparedStatement pstm = cnn.prepareStatement(sql);

      pstm.setString(1, t.getUserName());
      pstm.setString(2, t.getPassWord());
      pstm.setString(3, t.getHoTen());

      rs = pstm.executeUpdate();
      không truyền sql vào excecuteUpdate();

  • @HuyNguyen-cb9uo
    @HuyNguyen-cb9uo ปีที่แล้ว

    // 3. TẠO KẾT NỐI VỚI MỘT CƠ SỞ DỮ LIỆU TRONG localhost NẾU KHÔNG CÓ TẠO RA
    // database MỚI
    public static Connection getDatabaseConnection(String database_name) {
    Connection database_connection = null;
    try {
    Connection localhost_connection = JDBCUtil.getConnection();
    // Câu lệnh kiểm tra xem data base có tồn tại không (ta sử dựng Prepared
    // Statement)
    String check_exists_database = "SHOW DATABASES LIKE ?;";
    // Chuẩn bị một Prepared Statement
    PreparedStatement pst_check_database = localhost_connection.prepareStatement(check_exists_database);
    // Chuẩn bị thông tin cho các dấu ?
    pst_check_database.setString(1, database_name);
    // Lấy chuỗi ResultSet trả về khi thực hiện câu lệnh SQL
    ResultSet check_rs = pst_check_database.executeQuery();
    if (check_rs.next()) {
    System.err.println("CƠ SỞ DỮ LIỆU '" + database_name + "' ĐÃ TỒN TẠI!");
    String database_url = "jdbc:mySQL://localhostL:3306/" + database_name;
    String username = "root";
    String password = "";
    database_connection = DriverManager.getConnection(database_url, username, password);
    System.err.println("ĐÃ TẠO KẾT NỐI THÀNH CÔNG VỚI CƠ SỞ DỮ LIỆU '" + database_name + "'");
    } else {
    System.err.println("CƠ SỞ DỮ LIỆU '" + database_name + "' CHƯA TỒN TẠI!");




    // ???????????????????????????????????????????????????????????????????????????????????????????

    // Chuẩn bị câu lệnh để tạo cơ sở dữ liệu mới
    String create_database = "CREATE DATABASE ?;";
    // Chuẩn bị một Prepared Statement
    PreparedStatement pst_create_database = localhost_connection.prepareStatement(create_database);
    // Cài đặt giá trị cho dấu ?
    pst_create_database.setString(1, database_name);
    // Tiến hành câu lệnh tạo database mới
    int create_result = pst_create_database.executeUpdate();

    // ???????????????????????????????????????????????????????????????????????????????????????????





    System.out.println("************************* " + create_result + " ***********************");///////////////////////////
    if (create_result != 0) {
    System.err.println("ĐÃ TẠO CƠ SỞ DỮ LIỆU '" + database_name + "' THÀNH CÔNG!!");
    String database_url = "jdbc:mySQL://localhostL:3306/" + database_name;
    String username = "root";
    String password = "";
    database_connection = DriverManager.getConnection(database_url, username, password);
    System.err.println("ĐÃ TẠO KẾT NỐI THÀNH CÔNG VỚI CƠ SỞ DỮ LIỆU '" + database_name + "'");
    } else {
    System.err.println("KHÔNG KHỞI TẠO ĐƯỢC CƠ CỞ DỮ LIỆU '" + database_name + "' !!");
    }
    }
    } catch (SQLException e) {
    System.err.println("KHÔNG THỂ KẾT NỐI ĐƯỢC CƠ CỞ DỮ LIỆU '" + database_name + "' !!");
    e.printStackTrace();
    }
    return database_connection;
    }
    }
    ////////////////////////////////////////////
    ANH ƠI TẠI SAO EM KHÔNG THỂ SỬ DỤNG 'PREPARED STATEMENT' ĐỂ 'CREATE DATABASE' ANH ƠI?
    KHI CHẠY CÂU LỆNH SAU TRONG PHẦN TEST:
    Connection cnt_vn_persons = JDBCUtil.getDatabaseConnection("vietnam_persons");
    //////////////////////////////////////////
    XUẤT HIỆN LỖI:
    KẾT NỐI THÀNH CÔNG!
    CƠ SỞ DỮ LIỆU 'vietnam_persons' CHƯA TỒN TẠI!
    KHÔNG THỂ KẾT NỐI ĐƯỢC CƠ CỞ DỮ LIỆU 'vietnam_persons' !!
    java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''vietnam_persons'' at line 1
    at mysql.connector.java@8.0.30/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
    at mysql.connector.java@8.0.30/com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at mysql.connector.java@8.0.30/com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
    at mysql.connector.java@8.0.30/com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061)
    at mysql.connector.java@8.0.30/com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1009)
    at mysql.connector.java@8.0.30/com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1320)
    at mysql.connector.java@8.0.30/com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:994)
    at database.JDBCUtil.getDatabaseConnection(JDBCUtil.java:89)
    at test.TestConnection.main(TestConnection.java:9)

    • @TITVvn
      @TITVvn  ปีที่แล้ว

      Bạn hãy chụp ảnh lỗi gửi lên facebook Nhóm TITV

    • @HuyNguyen-cb9uo
      @HuyNguyen-cb9uo ปีที่แล้ว

      @@TITVvn Em dùng chat GPT xử lý được rồi ạ!

  • @jackmc8360
    @jackmc8360 2 ปีที่แล้ว

    LIKE

  • @developelife14
    @developelife14 2 ปีที่แล้ว

    em muốn biết thầy học IT từ newbie to proplayer ra sao quá hy vọng thầy chia sẽ 1 ít thôi cũng được ạ em đang mất động lực 😓😢

    • @TITVvn
      @TITVvn  2 ปีที่แล้ว

      Bạn hãy gửi câu hỏi tại nhóm facebook.com/groups/titv.vn nếu có thành viên trong nhóm biết câu trả lời họ sẽ sẵn sàng giúp đỡ bạn. Đăng ký kênh và chia sẻ cho các bạn khác cùng học nhé. Chúc bạn học thật tốt.

  • @TuanNguyen-ie2zm
    @TuanNguyen-ie2zm 2 ปีที่แล้ว

    chuỗi bài này dự kiến bao nhiêu thế anh

  • @vannhat2747
    @vannhat2747 ปีที่แล้ว

    khi nao em di lam , em se donate cho thay

  • @nguyenthanhnhut4304
    @nguyenthanhnhut4304 ปีที่แล้ว

    *Cảm ơn anh*

  • @JackSDM
    @JackSDM 2 ปีที่แล้ว

    LIKE

  • @hongthaile2229
    @hongthaile2229 2 ปีที่แล้ว

    LIKE