Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数据库连接信息放在单独的文件中?_Java_Mysql - Fatal编程技术网

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

Java 如何将数据库连接信息放在单独的文件中?,java,mysql,Java,Mysql,在PHP中,我们只需创建一个文件,例如connect.PHP 然后我们将此文件包含到我们喜欢的每一页: 在Java中,我在同一个项目文件夹中创建了一个单独的文件,名为connect.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();
            }

        }

    }

方法之一是使用
BaseDAO
方法返回
连接
对象,在该对象中可以有以下代码-

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;
 }
}
然后,您可以在所有其他
DAO
类中扩展此
BaseDAO
,或者创建
BaseDAO
类的对象并获取
连接
对象

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


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

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

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

既然您似乎刚开始使用Java,我必须告诉您-这是一条漫长的路要走。。。但从长远来看,我想建议大家看看Java应用服务器,例如。 这些服务器将JDBC连接称为“数据源”,因此这就是您想要配置的

其中,通常使用JPA-Java持久性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>

org.hibernate.ejb.HibernatePersistence
(在这种情况下,定义了DB属性,以示说明,但数据源通常在AS中定义)

然后创建一个名为
EntityRangerFactory
的东西,从中获取一个“连接”(
EntityManager
),并调用方法来操作数据或执行SQL

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


如果您不想使用其中任何一个,那么创建您自己的“DbManager”,通常称之为“DbManager”,但至少出于性能原因,您需要一个“连接池”,请参见,例如..

您的问题是如何重用此代码?是的,我想我是对的,并且能够在任何地方使用它使用的所有变量。您可以有可重用片段的方法,例如,为了获取连接,您可以有一个具有连接池的包装器类,对于您的常见问题,您可以将它们包装在实用程序类中。请格式化您的问题,这是不可读的。作为补充说明,在生产网站上,请不要使用根数据库用户。创建一个新用户,该用户仅对数据库中的必要表具有必要的权限。这将(在一定程度上)减少可能发生的与数据库相关的问题。这很好,现在让我试试看,但这是否意味着您不能在JFrame中使用连接?因为您只能扩展一个类!?
<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>