当前位置:编程学习 > JAVA >>

java 中数据库连接出现的错误 求大师指导

public class FileDemo {
 static Connection conn=null;
         static PreparedStatement st=null;
 static ResultSet rs=null;
 static String dbUrl = "jdbc:oracle:thin:@192.168.135.154:1521:Test"; 
 static String theUser = "sort123"; 
 static String thePw = "123";
 public static  Connection createConnection() {//做数据库连接
try {   
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
conn = DriverManager.getConnection(dbUrl, theUser, thePw); 
//System.out.println("aaaaaaaaaa");
} catch (Exception e) { 
e.printStackTrace(); 
}
return conn;
 }
public static void closeDB(ResultSet rs,Statement st,Connection conn){
         //关闭数据库
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

public  static void getList(String directory){//取得给定路径的父目录和文件名
 try {
  File file = new File(directory);
           showFile(file);             
} catch (Exception e) {
e.printStackTrace();
}  
   }
   public static void showFile(File file) {//取得文件的父目录和文件名
String filepath;
String filename;
try {
if (file.isDirectory()) {
File files[] = file.listFiles();
for (int i = 0; i < files.length; i++) { 
showFile(files[i]);
}

else{
filepath=file.getParentFile().toString();
filename=file.getName();
conn=FileDemo.createConnection();
String sql="call SORTDATA.IMG_INSERT(?,?)";//调用一个存储过程
st=conn.prepareStatement(sql);
st.setString(1, "'"+filepath+"'");
        st.setString(2, "'"+filename+"'");
System.out.println("'"+filename+"'");
        System.out.println("'"+filepath+"'");
st.executeUpdate();
}
} catch (Exception e) {
e.printStackTrace();
}finally{
FileDemo.closeDB(rs, st, conn);
}
}
public static void main(String[] args) {
FileDemo.getList("D:\\mywork");
}

}


错误:ORA-06512: 在 "SORTDATA.IMG_INSERT", line 33

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:742)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:212)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:951)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1159)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3284)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3367)
  求大师帮忙求大师帮忙求大师帮忙求大师帮忙求大师帮忙求大师帮忙求大师帮忙 --------------------编程问答-------------------- 能不能帮我看看可能是那部分出现错误了?谢谢 --------------------编程问答-------------------- 调用存储过程好像写错了,你再确认一下 --------------------编程问答-------------------- package com.aa;
//静态变量相当于一个全局变量使用
import java.io.*;
import java.sql.*;
public class Test
{
public void getList(String directory) 
{
    try {
getFile(directory);
} catch (SQLException e) {
e.printStackTrace();
}
    File file = new File(directory);
    File[] files = file.listFiles();
    for(int i=0;i<files.length;i++){
      File fil = files[i];
      if(fil.isDirectory()){
        getList(directory+ "\\" + fil.getName().toString());
      }
    }
}
public static void getFile(String directory)  throws SQLException
{
    String  p_path ;
    String filename;
    File file = new File(directory);
    File[] files = file.listFiles();
    p_path =directory;
    for(int i=0;i<files.length;i++){
      File fil = files[i];
      if(fil.isFile()){
        filename=fil.getName().toString();
        String driver = "oracle.jdbc.driver.OracleDriver";
        String strUrl = "jdbc:oracle:thin:@192.168.135.154:1521:XIAOLINLIN";
        PreparedStatement stmt = null;
        ResultSet rs = null;
        Connection conn = null;
     try {
         Class.forName(driver).newInstance();
         conn = DriverManager.getConnection(strUrl, "xiaolinlin", "xiaolinlin");
         //stmt=(PreparedStatement) conn.createStatement();
         CallableStatement proc = null;
         proc = conn.prepareCall("{call SORTDATA.IMG_INSERT(?,?)}");
         proc.setString(1,p_path);
         proc.setString(2,filename);
         System.out.println("'"+filename+"'");
         proc.execute();
         } catch (Exception ex2) {
           ex2.printStackTrace();
         }  
     finally{
             try {
                 if(rs != null){
                       rs.close();
                 if(stmt!=null){
                       stmt.close();
                       }
                 if(conn!=null){
                       conn.close();
                       }
                     }
                 }
            catch (SQLException ex1) {
            }
      }
    }
}
}
   public static void main(String[] args) throws SQLException{
   Test t=new Test();
   String directory="E:\\MyWork";
   t.getList(directory);
   }
}
我把代码修改了一下 可是新的错误来了:
java.sql.SQLException: ORA-01031: 权限不足
ORA-06512: 在 "SORTDATA.IMG_INSERT", line 33
ORA-06512: 在 line 1

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:212)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:951)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1160)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
at oracle.jdbc.driver.OracleCallableStatement.execute
我调用存储过程应该没有错吧?我查了资料都是这样写的
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,