如何将数据库连接信息放到单独的文件中?

时间:2013-07-06 23:17:01

标签: java mysql

在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();
            }

        }

    }

2 个答案:

答案 0 :(得分:8)

接近的方法之一是让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++;
    }
  }

答案 1 :(得分:1)

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

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

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

因为看起来你只是从Java开始,我必须告诉它 - 这是一种漫长的方式......但是我想建议你长期看看Java应用服务器,例如: JBoss AS。 这些服务器调用JDBC连接“Datasources”,这就是您要配置的内容。

在这些中,通常使用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