2015-05-24 2 views
-1

Я пытаюсь создать форму входа Java Swing. Моя программа имеет два JTextFields (имя пользователя и пароль) и JButton («Отправить»). Я подключил эту программу к базе данных MS Access.Java login - MS Access database

Вот код, который я написал только для подключения к базе данных:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + "C:\\Libsoft\\Libsoft.accdb"; 
Connection conn = DriverManager.getConnection(url, "", ""); 
System.out.println("Connection Succesfull"); 

Я буду использовать usernamefield.getText(), чтобы получить набранное имя пользователя, а затем я хочу поиска, в базе данных.
Как только программа находит введенное имя пользователя под столбцом имени пользователя, я хочу получить данные из соседней ячейки i.e ячейки под столбцом пароля.
Затем я проверю, соответствует ли введенный пароль одному из базы данных или нет, и если да, то я дам доступ к пользователю.

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

Заранее благодарен!

+0

А что именно не работает? Какая у вас ошибка/проблема? – Seelenvirtuose

+0

@Seelenvirtuose Я не знаю, как получить данные из соседней ячейки. Не могли бы вы помочь мне с кодом? –

+0

Если вы «не знаете, как извлекать данные», вы должны изучить его. Узнайте о SQL и работе с учебными пособиями по Java, касающимися доступа к базе данных. SO ist не учебный ярлык. – Seelenvirtuose

ответ

1

Но нигде я не нашел способ получить данные из соседней ячейки.

Я мало знаю о SQL, но сомневаюсь, что вы получите данные из соседней ячейки. Вам нужно знать имя столбца в таблице.

Необходимо создать запрос с использованием SQL. Предполагая, что у вас есть таблица (UserTable) с двумя столбцами (ID пользователя, пароль), вы можете создать запрос типа (непроверенных код):

try 
{ 
    String sql = "Select Password from UserTable where UserId = ?"; 
    PreparedStatement stmt = connection.prepareStatement(sql); 
    stmt.setString(1, userName.getText()); 
    stmt.executeQuery(); 

    if (rs.next()) // userid found, validate the password 
    { 
     String password = rs.getString(1); 

     // test if password matches the value entered in the text field 
    } 
    else // user not found 
    { 
     System.out.println("Invalid UserId"); 
    } 
    stmt.close(); 
} 
catch(SQLException e) 
{ 
    System.out.println(e); 
} 

PreparedStatment проста в использовании, потому что она будет форматировать SQL правильно для вас при использовании параметров.

Для получения дополнительных сведений о SQL вам необходимо прочитать учебник или начать с учебника по Java на JDBC Database Access.

+0

Спасибо за ваш быстрый ответ @camickr! Я знаю название столбца. Вот что я хочу сделать: я хочу, чтобы программа находила имя пользователя, чтобы найти совпадение в столбце «Username», а затем получить данные из соседней ячейки в столбце «Пароль». –

+1

@ChinmayDabke, я не знаю, почему вы продолжаете принимать «соседнюю ячейку». Для меня это ничего не значит. Это не то, как работает база данных. Я дал вам пример запроса, который вернет пароль для идентификатора пользователя. Это все, что я могу предложить. – camickr

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