import java.util.*;
import java.io.*;
import java.sql.*;
public class InsertCustomType2_Oracle {
public static Connection getConnection() throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
String username = "name";
String password = "pass";
Class.forName(driver); // load Oracle driver
return DriverManager.getConnection(url, username, password);
}
public static void main(String[] args) {
String id = "001";
String isbn = "1234567890";
String title = "Java Oracle";
String author = "java2s";
int edition = 1;
// create the Book object
Book book = new Book(isbn, title, author, edition);
book.print();
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = getConnection();
// create type map
java.util.Map map = conn.getTypeMap();
System.out.println("map=" + map);
map.put("BOOK", Class.forName("Book"));
System.out.println("map=" + map);
String insert = "insert into book_table(ID, BOOK) values(?, ?)";
pstmt = conn.prepareStatement(insert);
pstmt.setString(1, id);
pstmt.setObject(2, book);
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
} finally {
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
/**
* A class to hold a copy of "BOOK" data type
*/
class Book implements SQLData, Serializable {
public static final String SQL_TYPE_NAME = "BOOK";
public String isbn;
public String title;
public String author;
public int edition;
public Book() {
}
public Book(String isbn, String title, String author, int edition) {
this.isbn = isbn;
this.title = title;
this.author = author;
this.edition = edition;
}
// retrieves the fully qualified name of the SQL
// user-defined type that this object represents.
public String getSQLTypeName() {
return SQL_TYPE_NAME;
}
// populates this object with data it reads from stream
public void readSQL(SQLInput stream, String sqlType) throws SQLException {
this.isbn = stream.readString();
this.title = stream.readString();
this.author = stream.readString();
this.edition = stream.readInt();
}
// writes this object to stream
public void writeSQL(SQLOutput stream) throws SQLException {
stream.writeString(this.isbn);
stream.writeString(this.title);
stream.writeString(this.author);
stream.writeInt(this.edition);
}
public void print() {
System.out.println("isbn=" + isbn);
System.out.println("title=" + title);
System.out.println("author=" + author);
System.out.println("edition=" + edition);
}
}
|