【问题标题】:Unable to retrieve data from ms access db in java无法从 java 中的 ms access db 中检索数据
【发布时间】:2013-12-16 13:08:40
【问题描述】:

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

我只想从我的 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){

    }


}

它没有显示任何错误。

数据库包含 3 列 1-id 2-服务 3价

【问题讨论】:

  • 我也尝试过使用 while 循环:while(rs.next()){String price_value = rs.getString("price");}
  • 如果你在 catch 块中执行 e.printStackTrace();System.out.println(e.getMessage()); 会显示错误

标签: java ms-access jdbc odbc


【解决方案1】:

连接 con=DriverManager.getConnection("jdbc.odbc:acescon");

上面语句中的jdbc.odbc:acescon应该是jdbc:odbc:acescon。

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

【讨论】:

  • 哎呀!!毕竟我是 jdbc 的新手。我刚刚为我的最终项目创建了可行的模块,所以我确实需要那个连接。
  • 我在课程开始时创建了连接,然后我在许多其他课程中使用它,如果有更好的方法,请在上面的答案中建议我。我将在整个应用程序中多次需要连接。
【解决方案2】:
 String query= "Select  price from service table where service="+service_name;

这应该是

 String query= "Select  price from service table where service="+"'"+service_name+"'";

rs.next();

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

【讨论】:

  • 你的代码是对的。我弄错了应该是“服务表”而不是服务表的表的名称。但由于我有一些其他错误,我没有得到结果
【解决方案3】:

很抱歉没有早点回复。 我正在尝试做这样的事情:

我有一个包含服务的组合框和另一个包含员工的组合框,当我点击时 在添加按钮上,它应该从数据库中的服务表中获取所选值的价格,并将新行添加到下表中。 这是我创建的最终代码,它运行良好,因为服务数量少于 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 方法中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-17
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多