Как вывести строки в класс SQL-соединения - PullRequest
0 голосов
/ 06 июля 2019

Я новичок в программировании на Java. У меня есть класс соединения SQL, который подключается к моей базе данных.

Мой код был проверен моим наставником, и он попросил меня "Вывести строки с помощью файла свойств". Я не уверен, что он имеет в виду под этим и как это делать.

Я исследовал это онлайн и нашел статьи о мастере затмений и интернационализации. Это оставило меня в замешательстве. Я не уверен, должен ли я следовать этому.

Мой класс SQL-соединения выглядит следующим образом.

public class SQLConnection {
    Connection conn = null;
    public static Connection dbConnector() {
        try {
            Class.forName("org.sqlite.JDBC");
            Connection conn = DriverManager.getConnection("jdbc:sqlite:xxxdbnamexxx.db");

            return conn;
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
            return null;
        }
    }
}

Я ожидаю, что класс соединения будет возвращать соединения, как это обычно происходит после экстернализации строк.

Я использую Eclipse IDE, если это поможет.

Ответы [ 3 ]

2 голосов
/ 06 июля 2019

Ваш наставник означает, что ваше приложение должно получать строки "jdbc: sqlite: xxxdbnamexxx.db" и, возможно, "org.sqlite.JDBC" из файла свойств (или аналогичного), а не встраивать их в ваш код.

Это позволит пользователю вашего приложения подключаться к другой базе данных без изменения исходного кода.Все, что им нужно сделать, это изменить файл свойств, содержащее свойство конфигурации.

1004 * Теперь это спорно, что именно должно быть экстернализировано.Следует учитывать, что ваш код может быть специфичным для SQLite, потому что база данных всегда будет SQLite, или потому что вы полагаетесь на SQLite-специфичный SQL или поведения.Поэтому неясно, должно ли имя класса драйвера ("org.sqlite.JDBC") быть параметром.

Существует много возможных способов сделать экстернализацию, но простой способ - использовать объект java.util.Properties и его загрузку.и сохранить методы;см. javadocs для деталей.


Это не связано с интернационализацией, когда приложение получает пользовательские сообщения из «комплекта ресурсов» в зависимости от локали, в которой работает приложение.

0 голосов
/ 06 июля 2019

Я не уверен, есть ли тривиальный способ сделать это.Но вы можете сделать это:

//Properties is a class:
Properties prop=new Properties();
//read file
InputStream in = 
BaseDao.class.getClassLoader().getResourceAsStream("jdbc.properties");
prop.load(in);
//load file
String userName = prop.getProperty("userName");
String pwd = prop.getProperty("pwd");
String url = prop.getProperty("url");
String driver = prop.getProperty("driver");
// database driver
Class.forName(driver);
// get connection
Connection conn = DriverManager.getConnection(url, userName, pwd);

И создать новый файл с именем 'jdbc.properties', помещенный в корневой каталог ресурсов:

userName=root
pwd=password
// sqlite driver name
driver=org.sqlite.JDBC
// address of your database 
url=jdbc:sqlite:personName.db
0 голосов
/ 06 июля 2019

DriverManager.html#getConnection - перегруженный метод. Вы используете простую версию , которая принимает одну строку. Существуют другие версии, например , которая принимает URL, имя пользователя и пароль .

Вы можете использовать это так:

// The three arguments are here just for demonstration. Read them from a file,
// pass them as environment variables or as user input.
String url = "jdbc:sqlite:xxxdbnamexxx.db";
String username = "dbuser";
String password = "secret-password";

Connection conn = DriveManager.getConnection(url, username, password);

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

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