Как передать код подключения? - PullRequest
2 голосов
/ 07 декабря 2011

Я работаю с JDBC. Как я на самом деле передаю код подключения другим объектам? чтобы не было проблем с его кодированием и нужны ли мне другие объекты для создания, если мне нужно закрыть соединение с базой данных ?? Вот мой код

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

import javax.sql.DataSource;

public class DisplayUsers {

    ResultSet resultSet = null;
    Statement statement = null;
    Scanner input = new Scanner(System.in);
    DataSource ds = null;



    public void showAll() {

        System.out.println("Search User: ");
        String user = input.nextLine();

        String query = "Select * from user";
        try {
            resultSet = statement.executeQuery(query);
            ResultSetMetaData metadata = resultSet.getMetaData();
            int columns = metadata.getColumnCount();
            while(resultSet.next()){
                for(int i = 1 ; i<=columns;i++){
                    System.out.printf("%-8s\t",resultSet.getObject(i));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Вот мой код Соединителя

import java.sql.*;

public class Jdbc {

        public void dbConn(){
            final String url = "jdbc:mysql://localhost:3306/payroll";
            Connection conn = null;
            try{
                 Class.forName("com.mysql.jdbc.Driver");
                 conn = DriverManager.getConnection(url,"root","123192");  
            }catch(Exception e){
                e.printStackTrace();
            }
        }
}

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Обычно вы получаете соединение по мере необходимости, выполняете SQL, а затем закрываете его. Если вы используете пул соединений, вы обычно запрашиваете его из пула и возвращаетесь в пул после того, как закончите.

Большую часть времени объекты Connection являются краткосрочными, используются только для одной транзакции. Открытые соединения связывают ресурсы БД, и вы не хотите оставлять их открытыми больше, чем нужно. Ничто не мешает вам передавать их вокруг других предметов, но будьте осторожны ...

1 голос
/ 07 декабря 2011

Лучший способ - использовать пул соединений. Если вы кодируете приложение Java EE, вы можете сделать пул в конфигурации (в glassfish вы можете использовать консоль администратора). Сервер свяжет этот пул (через DataSource) с указанным вами именем JNDI (скажем, «jndi / mydb»).

Таким образом, получить соединение в коде очень просто:

InitialContext ctx = new InitialContext();
//Application Server will automatically bind new InitialContext() call to its 
//own context (where your DataSource is located).
DataSource ds = ctx.lookup("jndi/mydb") 

Вы можете передать этот источник данных везде и получить getConnection так же просто, как ds.getConnection () , никогда не закрывая его (потому что он объединяется и используется повторно).

P.S. Использование DriverManager в качестве способа получения соединения подходит для небольших консольных приложений без требований к производительности и масштабируемости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...