java - 在java中从一个类访问另一个类的JDBC连接变量

标签 java sql oracle jdbc

我是java初学者。

我想在 jdk 1.8 中访问从类 test.javaTest2.java 的变量 JDBC 数据库连接变量 conn 。这两个类都位于Tool包中。数据库名称为UOHStudents,表为usertest

我的问题是:我可以通过在另一个类中创建对象来访问连接变量吗?如果是的话请检查代码我在哪里做错了?

测试.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);
        }


    }
}

测试2.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"));
             }    
    }
}

最佳答案

与注册驱动程序和连接数据库相关的代码位于test类的main方法中。您需要为类 test 声明一个构造函数,并在构造函数中调用 main 方法。尝试维护以下类的类级别变量 Connection、Statement、ResultSet;

public class test
{
    Connection conn;
    Statement st;
    ResultSet rs;
    public test()
    {
        main()
    }
    ....
}

关于java - 在java中从一个类访问另一个类的JDBC连接变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40502578/

相关文章:

java - 如何从现有 Dataframe 创建 Dataframe 并将特定字段设为 Struct 类型?

java - 如何在容器化 Jenkins 中使用主机系统中的 JDK 11 构建 Spring Boot 2

java - 如何在 Java 中比较字符串?

sql - PostgreSQL 不在过滤的多重排序查询上使用索引

sql - 获取每个subscriber_id 每月的最大(日期)记录。每月不返回重复的 ID

mysql - 包含列表中所有项目的 SQL 查询记录

java - Rust 在 Java 中函数式接口(interface)和方法引用的等价性是什么

sql - SQL 中的复杂外键约束

MYSQL - 分组并选择最高结果并使用 JOIN?

sql - 更改主键