import java.io.*;
import java.sql.*;
import java.nio.charset.Charset;
public class OrclInsert{
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
String str1;
public String str = "jdbc:oracle:thin:@localhost:1521:webgis"; public OrclInsert(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException ce){
System.out.println(ce.getMessage());
}
} public ResultSet executeQuery(String sql){
try {
conn=DriverManager.getConnection(str,"scott","triger");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(sql);
} catch (Exception ex1) {
System.out.println("操作数据库出错,请仔细检查");
System.err.println(ex1.getMessage());
}
return rs;
}
/*读取文件-------------------------*/
public static String selfReadFile(String strFileName) {
StringBuffer buf = null;
BufferedReader breader = null;
try {
breader = new BufferedReader(new InputStreamReader(new FileInputStream((strFileName)), Charset.forName("gb2312")));
buf = new StringBuffer();
while (breader.ready())
{
buf.append((char) breader.read());
}
breader.close();
}
catch (Exception e) {
e.printStackTrace();
}
return buf.toString();
}/*插入操作---------------------------------*/
public void executeUpdate(String sql){
try {
conn=DriverManager.getConnection(str,"scott","tiger");
conn.setAutoCommit(false);
PreparedStatement prest = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
String dir = "d:/xml/";
File directory = new File("d:/xml/");
File[] files = directory.listFiles();
InputStream ins=null;
for(int x = 0; x <files.length; x++)
{
File file=new File(dir + files[x].getName());
ins=new FileInputStream(file);
long filelength=file.length();
Reader fileReader=(Reader) new BufferedReader(new FileReader(file));
str1=readFile.selfReadFile(dir + files[x].getName());
//prest.setString(1, str1);
//prest.setCharacterStream(1, fileReader,filelength);
prest.setBinaryStream(1,ins,filelength);
prest.addBatch();
}
prest.executeBatch();
conn.commit();
prest.close();
conn.close();
}
catch (Exception ex2) {
System.out.println("操作数据库出错,请仔细检查");
System.err.println(ex2.getMessage());
}
}public static void main(String args[]){
String sql = "INSERT into gis(xml_data) VALUES(?)";
OrclInsert db = new OrclInsert();
db.executeUpdate(sql); }
}编译时没问题,运行时提示:
Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.T4C
PreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V
at OrclInsert.executeUpdate(OrclInsert.java:70)
at OrclInsert.main(OrclInsert.java:88)换了个Oracle的驱动后运行时又提示 ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值哪们大吓能帮我解决下,在线等,谢谢!
import java.sql.*;
import java.nio.charset.Charset;
public class OrclInsert{
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
String str1;
public String str = "jdbc:oracle:thin:@localhost:1521:webgis"; public OrclInsert(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException ce){
System.out.println(ce.getMessage());
}
} public ResultSet executeQuery(String sql){
try {
conn=DriverManager.getConnection(str,"scott","triger");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(sql);
} catch (Exception ex1) {
System.out.println("操作数据库出错,请仔细检查");
System.err.println(ex1.getMessage());
}
return rs;
}
/*读取文件-------------------------*/
public static String selfReadFile(String strFileName) {
StringBuffer buf = null;
BufferedReader breader = null;
try {
breader = new BufferedReader(new InputStreamReader(new FileInputStream((strFileName)), Charset.forName("gb2312")));
buf = new StringBuffer();
while (breader.ready())
{
buf.append((char) breader.read());
}
breader.close();
}
catch (Exception e) {
e.printStackTrace();
}
return buf.toString();
}/*插入操作---------------------------------*/
public void executeUpdate(String sql){
try {
conn=DriverManager.getConnection(str,"scott","tiger");
conn.setAutoCommit(false);
PreparedStatement prest = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
String dir = "d:/xml/";
File directory = new File("d:/xml/");
File[] files = directory.listFiles();
InputStream ins=null;
for(int x = 0; x <files.length; x++)
{
File file=new File(dir + files[x].getName());
ins=new FileInputStream(file);
long filelength=file.length();
Reader fileReader=(Reader) new BufferedReader(new FileReader(file));
str1=readFile.selfReadFile(dir + files[x].getName());
//prest.setString(1, str1);
//prest.setCharacterStream(1, fileReader,filelength);
prest.setBinaryStream(1,ins,filelength);
prest.addBatch();
}
prest.executeBatch();
conn.commit();
prest.close();
conn.close();
}
catch (Exception ex2) {
System.out.println("操作数据库出错,请仔细检查");
System.err.println(ex2.getMessage());
}
}public static void main(String args[]){
String sql = "INSERT into gis(xml_data) VALUES(?)";
OrclInsert db = new OrclInsert();
db.executeUpdate(sql); }
}编译时没问题,运行时提示:
Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.T4C
PreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V
at OrclInsert.executeUpdate(OrclInsert.java:70)
at OrclInsert.main(OrclInsert.java:88)换了个Oracle的驱动后运行时又提示 ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值哪们大吓能帮我解决下,在线等,谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货