更新日期:2024年09月11日
NATIONAL CHARACTER 相关操作
本示例实现了如下功能:
NationalCharacterSimple.simpleGetNClob 获取Nclob 类型内容。
NationalCharacterSimple.simpleSetNClob()通过
PreparedStatement.SetNClob 实现NClob 的存入数据库。
nationalCharacterSimple.simpleUpdateNClob()通过
PreparedStatement.UpdateNClob 实现Nclob 字段的更新。
GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司
- 131 -
更多关于NATIONAL CHARACTER 操作示例请参照工程。
示例如下:
package com.gbase.jdbc.simple;
import java.io.Reader;
import java.io.StringReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.NClob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class NationalCharacterSimple {
private static final String URL =
"jdbc:gbase://192.168.111.95:5258/test?user=sysdba&password=";
/**
* Runs all test cases in this test suite
*
* @param args
*/
public static void main(String[] args) {
NationalCharacterSimple nationalCharacterSimple = new
NationalCharacterSimple();
try {
nationalCharacterSimple.simpleGetNClob();
nationalCharacterSimple.simpleSetNClob();
nationalCharacterSimple.simpleUpdateNClob();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
GBase 8a 程序员手册JDBC 篇
- 132 -
南大通用数据技术股份有限公司
}
}
/**
* Simple for ResultSet.getNClob()
*
* @throws Exception
*/
public void simpleGetNClob() throws Exception {
Connection conn = null;
Statement stm = null;
ResultSet rs = null;
try {
Class.forName("com.gbase.jdbc.Driver");
conn = DriverManager.getConnection(URL);
stm = conn.createStatement();
createTable("simpleGetNClob", "(c1 NATIONAL
CHARACTER(10), c2 NATIONAL CHARACTER(10))", stm);
stm.executeUpdate("INSERT
INTO
simpleGetNClob
(c1,
c2)
VALUES (_utf8 'aaa', _utf8 'bbb')");
rs = stm.executeQuery("SELECT c1, c2 FROM
simpleGetNClob");
rs.next();
char[] c1 = new char[3];
rs.getNClob(1).getCharacterStream().read(c1);
System.out.println(new String(c1));
char[] c2 = new char[3];
rs.getNClob("c2").getCharacterStream().read(c2);
System.out.println(new String(c2));
}catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司
- 133 -
e.printStackTrace();
} finally {
try {
rs.close();
} catch (NullPointerException e) {
} catch (Exception e) {
rs = null;
}
try {
stm.close();
} catch (NullPointerException e) {
} catch (Exception e) {
stm = null;
}
try {
conn.close();
} catch (NullPointerException e) {
} catch (Exception e) {
conn = null;
}
}
}
/**
* Simple for PreparedStatement.setNClob()
*
* @throws Exception
*/
public void simpleSetNClob() throws Exception {
Connection conn = null;
Statement stm = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
Class.forName("com.gbase.jdbc.Driver");
conn =
DriverManager.getConnection(URL+"&useServerPrepStmts=false&useUnicod
GBase 8a 程序员手册JDBC 篇
- 134 -
南大通用数据技术股份有限公司
e=true&characterEncoding=utf-8");
stm = conn.createStatement();
createTable("simpleSetNClob", "(c1 NATIONAL
CHARACTER(10), c2 NATIONAL CHARACTER(10), " +
"c3 NATIONAL CHARACTER(10))", stm);
pstm = conn.prepareStatement("INSERT INTO
simpleSetNClob (c1, c2, c3) VALUES (?, ?, ?)");
pstm.setNClob(1, (NClob)null);
NClob nclob2 = conn.createNClob();
nclob2.setString(1, "aaa");
pstm.setNClob(2, nclob2); // for
setNClob(int, NClob)
Reader reader3 = new StringReader("\'aaa\'");
reader3 = new StringReader("\'aaa\'");
pstm.setNClob(3, reader3, 5); // for
setNClob(int, Reader, long)
pstm.execute();
rs = stm.executeQuery("SELECT c1, c2, c3 FROM
simpleSetNClob");
rs.next();
//null
System.out.println(rs.getString(1));
//"aaa"
System.out.println(rs.getString(2));
//"\'aaa\'"
System.out.println(rs.getString(3));
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司
- 135 -
}finally {
try {
rs.close();
} catch (NullPointerException e) {
} catch (Exception e) {
rs = null;
}
try {
stm.close();
} catch (NullPointerException e) {
} catch (Exception e) {
stm = null;
}
try {
pstm.close();
} catch (NullPointerException e) {
} catch (Exception e) {
pstm = null;
}
try {
conn.close();
} catch (NullPointerException e) {
} catch (Exception e) {
conn = null;
}
}
}
/**
* Simple for ResultSet.updateNClob()
*
* @throws Exception
*/
public void simpleUpdateNClob() throws Exception {
Connection conn = null;
Statement stm = null;
PreparedStatement pstm = null;
GBase 8a 程序员手册JDBC 篇
- 136 -
南大通用数据技术股份有限公司
ResultSet rs = null;
ResultSet rs2 = null;
try {
Class.forName("com.gbase.jdbc.Driver");
conn =
DriverManager.getConnection(URL+"&useUnicode=true&characterEncoding=
utf-8");
stm =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);
createTable("simpleUpdateNChlob",
"(c1 CHAR(10) PRIMARY KEY, c2
NATIONAL CHARACTER(10)) default character set utf8", stm);
pstm = conn.prepareStatement("INSERT INTO
simpleUpdateNChlob (c1, c2) VALUES (?, ?)");
pstm.setString(1, "1");
NClob nClob1 = conn.createNClob();
nClob1.setString(1, "aaa");
pstm.setNClob(2, nClob1);
pstm.execute();
rs = stm.executeQuery("SELECT c1, c2 FROM
simpleUpdateNChlob");
rs.next();
NClob nClob2 = conn.createNClob();
nClob2.setString(1, "bbb");
rs.updateNClob("c2", nClob2);
rs.updateRow();(移动到这行然后修改改行数据)
rs.moveToInsertRow();
rs.updateString("c1", "2");
NClob nClob3 = conn.createNClob();
nClob3.setString(1, "ccc");
rs.updateNClob("c2", nClob3);
rs.insertRow();(移动到插入点然后插入新数据)
rs2 = stm.executeQuery("SELECT c1, c2 FROM
simpleUpdateNChlob");
rs2.next();
GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司
- 137 -
//"1"
System.out.println(rs2.getString("c1"));
//"bbb"
System.out.println(rs2.getNString("c2"));
rs2.next();
//"2"
System.out.println(rs2.getString("c1"));
//"ccc"
System.out.println(rs2.getNString("c2"));
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
rs.close();
} catch (NullPointerException e) {
} catch (Exception e) {
rs = null;
}
try {
rs2.close();
} catch (NullPointerException e) {
} catch (Exception e) {
rs2 = null;
}
try {
stm.close();
} catch (NullPointerException e) {
GBase 8a 程序员手册JDBC 篇
- 138 -
南大通用数据技术股份有限公司
} catch (Exception e) {
stm = null;
}
try {
pstm.close();
} catch (NullPointerException e) {
} catch (Exception e) {
pstm = null;
}
try {
conn.close();
} catch (NullPointerException e) {
} catch (Exception e) {
conn = null;
}
}
}
private void createTable(String objectName,
String columnsAndOtherStuff, Statement stmt) throws
SQLException {
createSchemaObject("TABLE", objectName,
columnsAndOtherStuff, stmt);
}
private void createSchemaObject(String objectType, String
objectName,
String columnsAndOtherStuff, Statement stmt) throws
SQLException {
dropSchemaObject(objectType, objectName, stmt);
StringBuffer createSql = new
StringBuffer(objectName.length() + objectType.length() +
columnsAndOtherStuff.length() + 10);
createSql.append("CREATE ");
createSql.append(objectType);
createSql.append(" ");
createSql.append(objectName);
GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司
- 139 -
createSql.append(" ");
createSql.append(columnsAndOtherStuff);
try {
stmt.executeUpdate(createSql.toString());
} catch (SQLException sqlEx) {
throw sqlEx;
}
}
private void dropSchemaObject(String objectType, String
objectName, Statement stmt)
throws SQLException {
stmt.executeUpdate("DROP " + objectType + " IF EXISTS "
+ objectName);
}
}