2016-08-21 3 views
2

Я хочу удалить строку, которая выбрана из JTable из базы данных. Я проверил, что моя java-программа связана с базой данных, но я запутался, как удалить всю строку из базы данных ms access, не затрагивая ни одну колонку, чтобы удалить выбранную строку в JTableУдаление строки в базе данных

Моя база данных состоит из 8 столбцов полное имя, отчество, отец CNIC, дата рождения, класс, адрес, город и провинция

int x = MyTable.getSelectedRow(); 
String b = String.valueOf(MyTable.getValueAt(x, 1)); 

try { 
    Connection con; 
    Statement stmt; 


    Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 
    con =DriverManager.getConnection("jdbc:ucanaccess://C://Users//abdul//Desktop/StudentDatabase.accdb"); 


    stmt = con.createStatement(); 

    stmt.executeUpdate("delete from StudentDatabase where row = 'x'"); 


    stmt.close(); 
    con.close(); 
    } 
    catch(Exception e) { 
    e.printStackTrace(); 
} 

ответ

3
stmt.executeUpdate("delete from StudentDatabase where row = 'x'"); 

Этот SQL-запрос неправильно. Например, если у вас есть следующая таблица в базе данных, CustomerID CustomerName ContactName 1 Mike +248439533 2 Bob +345353535

, и если вы хотите удалить строку «Mike», то вы должны написать запрос в качестве

delete from StudentDatabase where CustomerName = 'Mike'.

Если вы хотите удалить ряд CustomerID является «2», то вы должны написать запрос в

delete from StudentDatabase where CustomerID = 2

В вашем случае я надеюсь, что это будет ваш ответ.

public class Test { 
public static void main(String[] args) { 
    int rowIndex = MyTable.getSelectedRow(); 
    String name = String.valueOf(MyTable.getValueAt(rowIndex, 1)); 

    try { 
     Connection con; 
     Statement stmt; 


     Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 
     con = DriverManager.getConnection("jdbc:ucanaccess://C://Users//abdul//Desktop/StudentDatabase.accdb"); 


     stmt = con.createStatement(); 

     int result = stmt.executeUpdate("delete from StudentDatabase where CustomerName = '"+name+"'"); 

     if(result!=1){ 
      JOptionPane.showMessageDialog(null,"No record exists related to "+name); 
     } 



     stmt.close(); 
     con.close(); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

}

+1

это, вероятно, безопаснее 'удалить из StudentDatabase где CustomerID =«C001'' Там может быть более одной строки с именем Mike – Guenther

+0

получил вашу точку возможно, если микрофон будет заменен на переменная, например, я прошу пользователя ввести имя, которое он хочет удалить, и если он вводит laura вместо mike, так как заменить mike на laura, и если какая-либо запись не существует по имени laura, как печатать эту запись не существует –

+0

да, это был бы конфликт, если есть майк более одного, но в случае ID, если этот конкретный идентификатор не существует, как печатать жаль нет записи против этого ID –

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