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