BLOB는 최대 길이가 65535자이며 가변적인 양의 데이터를 보유할 수 있는 이진 대형 개체입니다.
이미지나 기타 유형의 데이터와 같은 대량의 바이너리 데이터를 저장하는 데 사용됩니다. 문서. TEXT로 정의된 필드에는 많은 양의 데이터도 포함됩니다. 둘 사이의 차이점은 저장된 데이터의 정렬 및 비교가 BLOB에서는 대소문자를 구분하지만 TEXT 필드에서는 대소문자를 구분하지 않는다는 것입니다. BLOB 또는 TEXT를 사용하여 길이를 지정하지 않았습니다.
Blob 데이터 유형을 데이터베이스에 저장하려면 JDBC 프로그램을 사용하여 아래 단계를 따르세요
1단계: 데이터베이스에 연결DriverManagergetConnection() 메소드를 사용할 수 있습니다. 데이터베이스에 연결
MySQL URL(jdbc:mysql://localhost/sampleDB)(여기서 exampleDB는 데이터베이스 이름), 사용자 이름 및 비밀번호를 매개변수로 getConnection() 메서드에 전달합니다.
String mysqlUrl = "jdbc:mysql://localhost/sampleDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
2단계: 준비된 문 만들기
Connection 인터페이스의 prepareStatement() 메서드를 사용하여 ReadyStatement 개체를 만듭니다. 삽입 쿼리(자리 표시자 포함)를 이 메서드에 매개 변수로 전달합니다.
PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
3단계: 자리 표시자 값 설정
PreparedStatement 인터페이스의 setter 메서드를 사용하여 자리 표시자 값을 설정합니다. 열의 데이터 유형에 따라 방법을 선택합니다. 예를 들어, 열 유형이 VARCHAR이면 setString() 메서드를 사용하고, 열 유형이 INT이면 setInt() 메서드를 사용할 수 있습니다.
열이 Blob 유형인 경우 setBinaryStream() 또는 setBlob() 메서드를 사용하여 해당 값을 설정할 수 있습니다. 이러한 메소드에는 매개변수 인덱스를 나타내는 정수 변수와 InputStream 클래스의 객체가 매개변수로 전달됩니다.
pstmt.setString(1, "sample image"); //Inserting Blob type InputStream in = new FileInputStream("E:\images\cat.jpg"); pstmt.setBlob(2, in);
4단계: 명령문 실행
PreparedStatement 인터페이스의 execute() 메서드를 사용하여 위에서 생성한 ReadyStatement 개체를 실행합니다.
ResultSet 인터페이스의 getBlob() 메서드는 열의 인덱스를 나타내는 정수(또는 열 이름을 나타내는 문자열 값)를 받아들이고 지정된 열의 값을 검색하여 이를 반환합니다. Blob 객체의 형태.
while(rs.next()) { rs.getString("Name"); rs.getString("Type"); Blob blob = rs.getBlob("Logo"); }
Blob 인터페이스의 getBytes() 메서드는 현재 Blob 개체의 콘텐츠를 검색하여 바이트 배열로 반환합니다. p>
getBlob() 메서드를 사용하면 blob의 내용을 바이트 배열로 가져오고 write() 메서드를 사용하여 이미지 FileOutputStream 개체를 만들 수 있습니다.
byte byteArray[] = blob.getBytes(1,(int)blob.length()); FileOutputStream outPutStream = new FileOutputStream("path"); outPutStream.write(byteArray);
다음 예에서는 MySQL 데이터베이스에 blob 데이터 유형의 테이블을 만들고 여기에 이미지를 삽입합니다. 이를 검색하여 로컬 파일 시스템에 저장합니다.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; public class BlobExample { public static void main(String args[]) throws Exception { //Registering the Driver DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //Getting the connection String mysqlUrl = "jdbc:mysql://localhost/sampleDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); //Creating a table Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE SampleTable( Name VARCHAR(255), Image BLOB)"); System.out.println("Table Created"); //Inserting values String query = "INSERT INTO SampleTable(Name,image) VALUES (?, ?)"; PreparedStatement pstmt = con.prepareStatement(query); pstmt.setString(1, "sample image"); FileInputStream fin = new FileInputStream("E:\images\cat.jpg"); pstmt.setBlob(2, fin); pstmt.execute(); //Retrieving the data ResultSet rs = stmt.executeQuery("select * from SampleTable"); int i = 1; System.out.println("Contents of the table are: "); while(rs.next()) { System.out.println(rs.getString("Name")); Blob blob = rs.getBlob("Image"); byte byteArray[] = blob.getBytes(1,(int)blob.length()); FileOutputStream outPutStream = new FileOutputStream("E:\images\blob_output"+i+".jpg"); outPutStream.write(byteArray); System.out.println("E:\images\blob_output"+i+".jpg"); System.out.println(); i++; } } }
Connection established...... Table Created Contents of the table are: sample image E:\images\blob_output1.jpg
위 내용은 JDBC Blob 데이터 유형이란 무엇입니까? 데이터를 저장하고 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!