无法从java中的ms访问数据库中检索数据

时间:2013-12-16 13:08:40

标签: java ms-access jdbc odbc

请看一下这段代码并告诉我哪里弄错了:

我只想获得通过我的ms access db从Combobox中选择的服务的价格 并将其显示在文本字段中

service_box=new JComboBox();
    service_box.setSize(20,25);
    service_box.addItem("Select a Service");
    service_box.addItem("Hair Cut");
    service_box.addItem("Facial");
    service_box.addItem("Bleaching");

.....

   service_box.addItemListener(this);
   add_bt.addActionListener(this);

...... ....

 @Override
public void itemStateChanged(ItemEvent i){

     service_name=(String)i.getItem();

}

@Override
public void actionPerformed(ActionEvent ie){


    try{
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con=DriverManager.getConnection("jdbc.odbc:acescon");

        String query= "Select  price from service table where service="+service_name;
        Statement stmt = con.createStatement();

        ResultSet rs = stmt.executeQuery(query);

        String price_value=rs.getString("price");

        total_tf.setText(price_value);
    }
    catch(SQLException | ClassNotFoundException e){

    }


}

但它并没有显示任何错误。

db包含3列 1-ID 2服务 3价

2 个答案:

答案 0 :(得分:0)

Connection con = DriverManager.getConnection(“jdbc.odbc:acescon”);

而不是jdbc.odbc:acescon在上面的语句中它应该是jdbc:odbc:acescon。

顺便说一句,每次点击按钮都不应创建连接。相反,您可以使用相同的连接或连接池来获得性能。

答案 1 :(得分:0)

因为没有早点回复而感到抱歉。  我正在尝试这样做:

我有一个带服务的COMBOBOX和另外一个有员工的COMBOBOX,当我点击时 在添加按钮时,它应该从DB中的服务表中获取所选值的价格,并将新行添加到下面的表中。 因此,这是我创建的最终代码,并且由于服务数量少于100,因此无法创建任何性能问题,

* 但是,如果任何人建议做更好的想法,我真的会感到欣慰* 这是工作代码“

String service_name;
   String price_value = null;
    try{
       service_name=(String)jComboBox1.getSelectedItem(); //GET SELECTED SERVICE
       String query= "Select * from services where service_name='"+service_name+"'";

        stmt = con.createStatement();

        ResultSet rs = stmt.executeQuery(query);

         while(rs.next())
         {
             if(rs.getString("service_name").equalsIgnoreCase(service_name)) //GET PRICE OF SERVICE
               price_value=rs.getString("Price");


         }
         //get employee name
         String emp_name=(String)jComboBox2.getSelectedItem();
           if (emp_name.equals("No one")) {
               emp_name="";
           }

           // insert the new row

      int row_count = jTable1.getRowCount();
       Object[] row_data={service_name,price_value,emp_name};
       dtm.insertRow(row_count, row_data);



    }
    catch(SQLException  e){

        javax.swing.JOptionPane.showMessageDialog(this,
                "ERROR IN ADDING SERVICE TO BILL\n"+e.toString(),"ERROR MESSAGE",
                javax.swing.JOptionPane.WARNING_MESSAGE);

    }

以下代码位于ADD按钮的actionPerformed方法中。