2013-07-06 3 views
2

В PHP мы просто создаем файл, например. connect.php , а затем мы включаем этот файл на каждую страницу мы любим:Как поместить информацию о подключении базы данных в отдельный файл?

В Java я создал отдельный файл в той же папке проекта под названием connect.java и попытался вызвать его в других файлах, так что эти файлы получить соединение с базой данных но пока не повезло.

Я пробовал в прошлый раз, но меня поразило то, что некоторые переменные со страницы подключения я не смог использовать в своей основной программе. может кто-то, пожалуйста, помогите мне. bellow - это код, который я использую для подключения к mysql, а также я prinde некоторые вещи

, но я хочу сделать его отдельным файлом, который ничего не печатает только для подключения, и я просто распечатываю все, что хочу, в другом файле

поэтому, если бы я говорил в 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

- ваш вопрос, пожалуйста, повторно используйте этот код_? –

+0

Да, я думаю, что я правильно понял, а также могу использовать все переменные, используемые в любом месте –

+1

. У вас может быть метод для многократных копий, например, для захвата соединения. У вас может быть класс-оболочка, имеющий пул соединений, для обычных вещей в вашем case вы можете обернуть их вокруг класса утилиты –

ответ

7

Один из пути подойти, чтобы иметь 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

Это здорово, позвольте мне попробовать его сейчас –

+0

Но значит ли это, что вы не можете использовать соединение в JFrame? Потому что вы можете расширить только один класс !? – James111

1

Способ разработки подхода PHP и Java очень отличается.

Подход, который в основном использует Java, похож на фреймворк Zend PHP.

Существует огромное количество фреймворков, которые позволяют выполнять экстернализацию конфигурации.

Поскольку кажется, что вы только начинаете с Java, я должен сказать - это простой способ ... но я хотел бы предложить вам в долгосрочной перспективе взглянуть на Java Application Server, например. 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.

+0

отличное качество спасибо большое –

Смежные вопросы