3

在 PHP 中,我们只需创建一个文件,例如connect.php ,然后我们将这个文件包含到我们喜欢的每个页面中:

在 Java 中,我在同一个项目文件夹中创建了一个单独的文件,connect.java并尝试在其他文件中调用它,以便这些文件获得数据库连接,但到目前为止没有运气。

我上次尝试过,但令我惊讶的是连接页面中的一些变量我无法在我的主程序中使用它们。有人可以帮帮我吗 。波纹管是我用来连接到mysql的代码,我还打印了一些东西

但我想让它成为一个单独的文件,它不打印任何内容只是为了连接,我只是在不同的文件中打印我想要的所有内容

所以如果我用 php 术语说话,我想将它包含到可能需要连接的其他文件中。

try {
                Class.forName("com.mysql.jdbc.Driver");
                System.out.println("Driver loading success!");
                String url = "jdbc:mysql://localhost:3306/saloon";
                String name = "root";
                String password = "";
                try {

                    java.sql.Connection con = DriverManager.getConnection(url, name, password);
                    System.out.println("Connected.");
             // pull data from the database 
    java.sql.Statement stmts = null;
    String query = "select  userid, username, name , address, hairstyle from saloonuser ";
    stmts = con.createStatement();
    ResultSet rs = stmts.executeQuery(query);
    int li_row = 0;
    while(rs.next()){
        mysTable.setValueAt(rs.getString("username"),li_row,0);
        mysTable.setValueAt(rs.getString("name"),li_row,1);
        mysTable.setValueAt(rs.getString("address"),li_row,2);
        mysTable.setValueAt(rs.getString("hairstyle"),li_row,3);

        int userid = rs.getInt("userid");
        String username = rs.getString("username");
        String name1     = rs.getString("name");
        System.out.println(name1);
        li_row++;
        } } catch (SQLException e) {
                    e.printStackTrace();
                }

            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }

        }

    }
4

2 回答 2

9

一种方法是BaseDAO使用一个返回Connection对象的方法,您可以在其中使用以下代码 -

public class BaseDAO {

 public Connection getConnection() {
   Class.forName("com.mysql.jdbc.Driver");
   String url = "jdbc:mysql://localhost:3306/saloon";
   String name = "root";
   String password = "";

   Connection con = DriverManager.getConnection(url, name, password);
   return con;
 }
}

然后,您可以BaseDAO在所有其他DAO类中扩展它或创建BaseDAO该类的对象并获取该Connection对象。

您剩余的代码将在一个单独的DAO类中。(让我们称之为GetDataDAO)。

public class GetDataDAO extends BaseDAO {

  Connection con = getConnection();
  Statement stmts = null;
  String query = "select  userid, username, name , address, hairstyle from saloonuser ";
  stmts = con.createStatement();
  ResultSet rs = stmts.executeQuery(query);
  int li_row = 0;
  while(rs.next()){
    mysTable.setValueAt(rs.getString("username"),li_row,0);
    mysTable.setValueAt(rs.getString("name"),li_row,1);
    mysTable.setValueAt(rs.getString("address"),li_row,2);
    mysTable.setValueAt(rs.getString("hairstyle"),li_row,3);

    int userid = rs.getInt("userid");
    String username = rs.getString("username");
    String name1     = rs.getString("name");
    System.out.println(name1);
    li_row++;
    }
  }
于 2013-07-06T23:34:27.107 回答
1

PHP 和 Java 的开发方式非常不同。

Java 主要使用的方法类似于 PHP 的 Zend 框架。

有大量框架允许您将配置外部化。

既然您似乎只是从 Java 开始,我不得不说 - 这是一个很长的路要走...但我想建议您,从长远来看,看看 Java 应用程序服务器,例如JBoss AS。这些服务器将 JDBC 连接称为“数据源”,这就是您要配置的内容。

其中,通常使用 JPA - Java Persistence API,它使用persistence.xml如下所示的文件:

<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

  <persistence-unit name="educationPU" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/COE" />
        <property name="hibernate.connection.username" value="root" />
        <property name="show_sql" value="true" />
        <property name="dialect" value="org.hibernate.dialect.MySQLDialect" />
    </properties>
  </persistence-unit>
</persistence>

(在这种情况下,为了说明,定义了 DB 属性,但数据源通常在 AS 中定义)

然后你创建一个叫做的东西EntityMangerFactory并从中获得一个“连接”(EntityManager)并调用方法来操作数据或执行 SQL。

如果您的应用程序是独立的,那么您可以看看所谓的 IoC 框架,例如 Weld-SE、Guice、Spring Framework 等,它们允许您将应用程序的配置和结构放入外部 XML(和其他)文件。

如果你不想使用其中任何一个,那么创建你自己的“DbManager”,因为它通常被称为,但至少,出于性能原因,你将需要一个“连接池”,例如C3P0

于 2013-07-07T00:51:46.293 回答