2013-12-17 1 views
3

Во-первых, я читаю имя продукта и количество продуктов пользователя, использующего jTextFields. Для этого продукта я прочитал идентификатор продукта и цену из базы данных с помощью SQL-запроса. Но в приведенном ниже коде я показываю цену продукта в jtextField, но во время запуска tha-файла я получаю запрос успешно, но я ничего не получаю в jtextField.Чтение данных из базы данных mysql с использованием java

И пожалуйста, проверьте запрос SQL и Resultset использование, имя таблицы имя «элемент» и база данных «MyShop», я объявил переменные globelly и этот код в JButton на «ActionPeformed» часть.

String item_name=name.getText(); 
int item_no=Integer.parseInt(no.getText()); 
String sql="SELECT id,price FROM item WHERE item.name='item_name'"; 
try{  
Class.forName("com.mysql.jdbc.Driver"); 
Connection con(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/myshop","root","mysql"); 
java.sql.Statement stmt=con.createStatement(); 
if (stmt.execute(sql)) { 
rs = stmt.getResultSet(); 
JOptionPane.showMessageDialog(this, "succes","executed query",JOptionPane.PLAIN_MESSAGE); 
} else { 
System.err.println("select failed");} 
int idIndex = rs.findColumn("id"); 
int priceIndex = rs.findColumn("price"); 

while(rs.next()){ 
item_id=rs.getInt(idIndex); 
item_price=rs.getInt(priceIndex); 
jTextField1.setText(""+item_price);//displaying product price in a jTextField1 
jTextField2.setText(""+item_id);//displaying product id in a jTextField2 
    } 
} 
catch(Exception e){ 
JOptionPane.showMessageDialog(this, e.getMessage()); 
} 
+2

Строка sql = "SELECT id, price FROM item WHERE id =" + item_no; –

ответ

1

вам нужно будет принять ITEM_NAME, как парам и поставить в кавычки,

String sql="SELECT id,price FROM item WHERE item.name='"+ item_name+"'"; 
+0

-1, этот ответ был дан 3 минутами ранее. Нет необходимости загромождать форум с дублирующимися ответами. – camickr

+0

это работает..от ваших друзей – user2827435

3

Эта линия должна быть

String sql="SELECT id,price FROM item WHERE item.name='item_name'"; 

как это

String sql="SELECT id,price FROM item WHERE item.name='"+item_name+"'"; 
+0

Попробуйте указать ответ без SQL-инъекций – Sach

+0

item.name = '"+ item_name +"' "это приведет к SQL-инъекции http://en.wikipedia.org/wiki/SQL_injection – Sach

+0

Также см. Ответ Aniket о SQL-инъекции. – Sach

3

PreparedStatement Используйте так что вам не придется беспокоиться о разграничении все переменные:

String sql="SELECT id, price FROM item WHERE item.name = ?"; 
PreparedStatement stmt = connection.prepareStatement(sql); 
stmt.setString(1, item_name); 
ResultSet rs = stmt.executeQuery(); 

Затем подготовленное заявление заменит переменную для вас правильными кавычками.

+0

это работает..от ваших друзей – user2827435

0

Постарайтесь избежать этого типа ошибки с помощью PreparedStatement

String sql="SELECT id,price FROM item WHERE item.name=?"; 
PreapredStatement ps = con.prepareStatement(sql); 
ps.setString(1,item_name); 
ResultSet rs = ps.executeQuery(); 

Использование PreparedStatement также prevent SQL injection attack.

+1

it работает..от ваших друзей – user2827435

0

попробуйте этот код.

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myshop","root","mysql"); 
      PreparedStatement pt=con.prepareStatement("SELECT id,price FROM item WHERE item.name=?"); 
      pt.setString(1,"item_name"); 
      ResultSet rs; 
      if(pt.execute()) 
      { 
       rs=pt.getResultSet(); 
       JOptionPane.showMessageDialog(this, "succes","executed query",JOptionPane.PLAIN_MESSAGE); 
      } 
      else { 
    System.err.println("select failed"); 
      } 

     while(rs.next()){ 
    item_id=rs.getInt(1); 
    item_price=rs.getInt(2); 
    jTextField1.setText(""+item_price);//displaying product price in a jTextField1 
    jTextField2.setText(""+item_id);//displaying product id in a jTextField2  

     } 
+0

это wo rking..thank друзья – user2827435

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

  • Нет связанных вопросов^_^