2016-11-09 14 views
1

私は初心者です。Javaのあるクラスから別のクラスへのJDBC接続変数へのアクセス

私はJDK 1.8にTest2.javaにクラスtest.javaから変数JDBCデータベース接続変数CONNにアクセスしたいです。どちらのクラスもツールパッケージに入っています。データベース名は、UOHStudentsとテーブルですusertest

私の質問はされています。私は別のクラスのオブジェクトを作ることによって、接続変数にアクセスすることができますか?はいの場合は、コードを確認してください。どこで間違いをしていますか?

test.java

mport java.sql.*; 
public class test 
{ 
    static String USERNAME= "root"; 
    static String CONN_STRING= "jdbc:mysql://localhost:3306/UOHStudents"; 
    public static void main(String args[]) 
    { 
     try 
     { 
      Connection conn; 
      Statement st; 
      ResultSet rs; 
      //get connection 
      conn = DriverManager.getConnection(CONN_STRING,USERNAME,""); 
      st=conn.createStatement(); 
        String sql1="CREATE TABLE if not exists usertest(name varchar(10), surname varchar(10),FatherName varchar(25))"; 
        st.executeUpdate(sql1); 

      System.out.println("table created"); 

        String sql2="INSERT INTO usertest values('preeti', 'singh','Mr shiv kumar singh'),('neha', 'singh','Mr shiv kumar singh'),('anil', 'kumar','Mr shiv kumar singh'),('rahul', 'kumar','Mr shiv kumar singh'),('ankita',  'kumari','Mr shiv kumar singh')"; 

        st.executeUpdate(sql2); 
      System.out.println("record inserted"); 

        String sql3= "SELECT * FROM usertest where surname='kumar'"; 
        st.executeQuery(sql3); 
      rs=st.getResultSet();  
      while(rs.next()) 
      { 
        System.out.println(rs.getString("name")); 
        System.out.println(rs.getString("surname")); 
        System.out.println(rs.getString("FatherName")); 
      } 
     } 

     catch(Exception e) 
     { 
      System.out.println(e); 
     } 


    } 
} 

Test2.java

package Tool; 
import java.sql.*; 
public class Test2 
{ 
    public static void main (String [] args) throws SQLException 
    { 
     Connection conn1; 
     Statement st1; 
     ResultSet rs1; 
     Tool.test ts = new Tool.test(); 
     public Test2() 
       { 
        this.conn1 = ts.conn; 
        this.rs1 = ts.rs; 
        this.st1 =ts.st; 

       } 
     String p = "Select * from usertest where name = 'preeti'"; 
     st1.executeQuery(p); 
     rs1 = st1.getResultSet(); 
     while(rs1.next()) 
      { 
        System.out.println(rs1.getString("name")); 
        System.out.println(rs1.getString("surname")); 
        System.out.println(rs1.getString("FatherName")); 
      }  
    } 
} 

答えて

0

ドライバを登録し、データベースの接続に関連するコードは、testクラスのmain方法に存在します。クラスtestにコンストラクタを宣言し、コンストラクタでmainメソッドを呼び出す必要があります。次のクラスのクラスレベル変数を維持しようとします。Connection, Statement, ResultSet;

public class test 
{ 
    Connection conn; 
    Statement st; 
    ResultSet rs; 
    public test() 
    { 
     main() 
    } 
    .... 
} 
関連する問題