Friday, July 9, 2010

Read a Clob object from MySQL

import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class ClobSelectMySQL{
public static Connection getConnection() throws Exception {
String driver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/databaseName";
String username = "root";
String password = "root";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
public static String getCLOB(int id) throws Exception {
Connection conn = null;
ResultSet rs = null;
PreparedStatement pstmt = null;
String query = "SELECT clobData FROM tableName WHERE id = ?";

try {
conn = getConnection();
pstmt = conn.prepareStatement(query);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
rs.next();
Clob clob = rs.getClob(1);
// materialize CLOB onto client
String wholeClob = clob.getSubString(1, (int) clob.length());
return wholeClob;
} finally {
rs.close();
pstmt.close();
conn.close();
}
}

public static void main(String args[]) throws Exception {
System.out.println(getCLOB(01));
}
}

Insert text file into MySQL

import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class InsertTextFileToMySQL {

public static Connection getConnection() throws Exception {
String driver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/databaseName";
String username = "root";
String password = "root";

Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}

public static void main(String[] args)throws Exception {
String id = "001";
String fileName = "fileName.txt";

FileInputStream fis = null;
PreparedStatement pstmt = null;
Connection conn = null;
try {
conn = getConnection();
conn.setAutoCommit(false);
File file = new File(fileName);
fis = new FileInputStream(file);
pstmt = conn.prepareStatement("insert into DataFiles(id, fileName, fileBody) values (?, ?, ?)");
pstmt.setString(1, id);
pstmt.setString(2, fileName);
pstmt.setAsciiStream(3, fis, (int) file.length());
pstmt.executeUpdate();
conn.commit();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
} finally {
pstmt.close();
fis.close();
conn.close();
}
}
}

Calling a Function in a Database

A function is essentially a stored procedure that returns a result. This example demonstrates how to call functions with IN, OUT, and IN/OUT parameters.

CallableStatement cs; try {
// Call a function with no parameters;
the function returns a VARCHAR // Prepare the CallableStatement
cs = connection.prepareCall("{? = call myfunc}"); // Register the type of the return value
cs.registerOutParameter(1, i); // Execute and retrieve the returned value cs.execute(); String retValue = cs.getString(1); // Call a function with one IN parameter; the function returns a VARCHAR
cs = connection.prepareCall("{? = call myfuncin(?)}"); // Register the type of the return value
cs.registerOutParameter(1, Types.VARCHAR); // Set the value for the IN parameter cs.setString(2, "a string"); // Execute and retrieve the returned value cs.execute(); retValue = cs.getString(1); // Call a function with one OUT parameter; the function returns a VARCHAR
cs = connection.prepareCall("{? = call myfuncout(?)}"); // Register the types of the return value and OUT parameter
cs.registerOutParameter(1, Types.VARCHAR); cs.registerOutParameter(2, Types.VARCHAR); // Execute and retrieve the returned values cs.execute();
retValue = cs.getString(1); // return value String outParam = cs.getString(2); // OUT parameter // Call a function with one IN/OUT parameter; the function returns a VARCHAR cs = connection.prepareCall("{? = call myfuncinout(?)}"); // Register the types of the return value and OUT parameter
cs.registerOutParameter(1, Types.VARCHAR); cs.registerOutParameter(2, Types.VARCHAR); // Set the value for the IN/OUT parameter
cs.setString(2, "a string"); // Execute and retrieve the returned values cs.execute(); retValue = cs.getString(1); // return value outParam = cs.getString(2); // IN/OUT parameter } catch (SQLException e) { }