2016-02-28 80 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