2016-02-28 86 views
1

在这里,我有一个类的返回连接,并试图访问另一个类中的连接对象,我正在编写我准备好的语句来执行查询和更新表。请提出是否它是正确的方式,如果不是发布您的意见。 由于事先想要访问另一个类的连接对象

连接类

public class dbConnection { 

    public Connection dbconnect() 
    { 
     Connection conn = null; 
     String url = "jdbc:mysql://localhost:3306/"; 
     String db = "gup"; 
     String driver = "com.mysql.jdbc.Driver"; 
     String user = "root"; 
     String pass = ""; 
     try{ 
      Class.forName(driver); 
      conn = DriverManager.getConnection(url + db, user, pass); 
      if(conn == null){ 
       System.out.println("Connection is not established"); 
      } 
      return conn ; 
     } 
     catch(Exception e) 
     { 
      System.out.println(e); 
     } 
     return null ; 
    } 

} 

预处理语句类中插入数据

public class InsertingData { 


    public void insertfile(String fpath,String fname,String fext) 
    { 
     PreparedStatement pstmt = null; 
     // Connection conn = null ; 
     dbConnection dbcon = new dbConnection(); 
     pstmt = (PreparedStatement) dbcon.dbconnect(); 
     //Create the statement object 
     String sql = "insert into FileDetails (folder_path,file_name,file_extension)" + "values (?,?,?)"; 
     try 
     { 

     //ResultSet rs = pstmt.executeQuery(sql); 
     pstmt.setString(1, fpath); 
     pstmt.setString(2, fname); 
     pstmt.setString(3, fext); 
     pstmt.executeQuery(sql); 
     } 
     catch(SQLException se) 
     { 
      System.out.println(se); 
     } 
    } 
} 
+0

您有什么问题,看到了什么?错误信息?堆栈跟踪? 'pstmt =(PreparedStatement)dbcon.dbconnect();'不会工作,因为您不能将'dbconnect()'返回的'Connection'转换为'PreparedStatement'。你用'prepareStatement()'从连接对象中获得'PreparedStatement',而不是通过强制转换。 –

+0

错误是com.mysql.jdbc.Connection无法转换为java.sql.PreparedStatement。 好的,那么如何在这些类中使用连接对象。 – satya

+0

通过阅读Connection的javadoc来发现可以调用的方法以及它们的作用。 Jim Garrison已经告诉过你connection.prepareStatement()。阅读javadoc。 http://docs.oracle.com/javase/8/docs/api/java/sql/Connection.html –

回答

0

,而不是试图投的连接到一个PreparedStatement,使用连接来获得一份准备好的声明。更换

pstmt = (PreparedStatement) dbcon.dbconnect(); 
String sql = "insert into FileDetails (folder_path,file_name,file_extension)" + "values (?,?,?)"; 
.... 
pstmt.executeQuery(sql); 

Connection conn = dbcon.dbconnect(); 
pstmt = conn.prepareStatement("insert into FileDetails (folder_path,file_name,file_extension)" + "values (?,?,?)"); 
.... 
pstmt.executeUpdate(); 

https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html