Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เขียนตัวอย่าง JDBC สำหรับการแทรกค่าสำหรับประเภทข้อมูล Blob ลงในตารางหรือไม่


สมมติว่าเรามีตารางชื่อ MyTable ในฐานข้อมูลแล้วโดยมีคำอธิบายดังต่อไปนี้

<ก่อนหน้า>+-------+--------------+------+----+---------+ --------+| สนาม | พิมพ์ | Null | คีย์ | ค่าเริ่มต้น | พิเศษ |+-------+--------------+------+ -----+---------+- ------+| ชื่อ | varchar(255) | ใช่ | | NULL | || ภาพ | หยด | ใช่ | | NULL | |+-------+--------------+------+----+---------+-- -----+

หากคุณต้องการแทรกค่าลงในชนิดข้อมูล blob โดยใช้โปรแกรม JDBC คุณต้องใช้เมธอดที่ตั้งค่าข้อมูลไบนารีสตรีม อินเทอร์เฟซ PreparedStatement มีวิธีการต่อไปนี้ในการแทรกรูปภาพลงในตาราง

โมฆะ setBinaryStream(int parameterIndex, InputStream x) วิธีตั้งค่าข้อมูลในสตรีมอินพุตที่กำหนด (จนถึงจุดสิ้นสุดของไฟล์) เป็นค่าพารามิเตอร์ที่ดัชนีที่กำหนด

รูปแบบอื่นๆ ของวิธีนี้คือ

  • ถือเป็นโมฆะ setBinaryStream(int parameterIndex, InputStream x, int length)

  • ถือเป็นโมฆะ setBinaryStream(int parameterIndex, InputStream x, long length)

โมฆะ setBlob(int parameterIndex, Blob x) วิธีตั้งค่าวัตถุหยดที่กำหนดให้เป็นค่าพารามิเตอร์ที่ดัชนีที่กำหนด

รูปแบบอื่นๆ ของวิธีนี้คือ

  • ถือเป็นโมฆะ setBlob (int พารามิเตอร์Index, InputStream inputStream)

  • ถือเป็นโมฆะ setBlob(int parameterIndex, InputStream inputStream, long length)

คุณสามารถตั้งค่าเป็นประเภทข้อมูล Blob ได้โดยใช้วิธีใดวิธีหนึ่งเหล่านี้

ตัวอย่าง

ตัวอย่างต่อไปนี้ตั้งค่าเป็นประเภทข้อมูล Blob โดยใช้วิธี setBinaryStream()

<ก่อนหน้า>นำเข้า java.io.FileInputStream นำเข้า java.io.FileNotFoundException นำเข้า java.sql.Connection นำเข้า java.sql.DriverManager นำเข้า java.sql.PreparedStatement นำเข้า java.sql.SQLException ระดับสาธารณะ IndertingValue โมฆะคงที่หลัก (สตริง args []) พ่นข้อยกเว้น { //การลงทะเบียนไดรเวอร์ DriverManager.registerDriver (ใหม่ com.mysql.jdbc.Driver ()); //รับการเชื่อมต่อสตริง mysqlUrl ="jdbc:mysql://localhost/sampleDB"; การเชื่อมต่อ con =DriverManager.getConnection (mysqlUrl, "root", "password"); System.out.println("การเชื่อมต่อสำเร็จ......"); //การใส่ค่า String query ="INSERT INTO MyTable(Name,image) VALUES (?, ?)"; preparedStatement pstmt =con.prepareStatement (แบบสอบถาม); pstmt.setString(1, "sample_image"); FileInputStream fin =ใหม่ FileInputStream("E:\\images\\cat.jpg"); pstmt.setBinaryStream(2, ครีบ); pstmt.execute(); System.out.println("บันทึกถูกแทรก ....."); }}

ผลลัพธ์

เชื่อมต่อแล้ว......แทรกบันทึกแล้ว ......

หากคุณพยายามดูค่า blob ในบันทึกโดยใช้ MySQL work bench คุณจะเห็นภาพที่แทรกดังแสดงด้านล่าง:

เขียนตัวอย่าง JDBC สำหรับการแทรกค่าสำหรับประเภทข้อมูล Blob ลงในตารางหรือไม่