使用SQL在Access中选择特定值

时间:2014-02-21 20:02:16

标签: java sql sql-server ms-access ms-access-2007

我正在开发一个将Access链接到Java GUI的项目。我目前正在寻找一种在查询中选择包含特定值的记录的方法。

如果我的字段是:

Name |      Job      | Hours Worked
Tom  | Sales Support |       6
Bill |    Manager    |       8
Tom  |  Sales Floor  |       5

我在GUI的搜索字段中输入Tom,我希望将以下内容返回到GUI:

Name |      Job      | Hours Worked
Tom  | Sales Support |       6
Tom  |  Sales Floor  |       5

我尝试使用此代码:

       ArrayList<String> list = new ArrayList<>();
       String filePath = "C:\\Users\\Bob\\Schedule.accdb";
       Connection con=DriverManager.getConnection("jdbc:ucanaccess://"+filePath);
       Statement st = con.createStatement();
       ResultSet rs = st.executeQuery("SELECT * FROM [Double Booking] WHERE [Name] = Tom");
       while(rs.next()) list.add(rs.getString(1));
       con.close();
       return list.toArray();

但是我收到了错误:

net.ucanaccess.jdbc.UcanaccessSQLException: user lacks privilege or object not found: TOM

当我输入st.executeQuery(“SELECT [Name] FROM [Double Booking]”)时,我收到类似的错误:

net.ucanaccess.jdbc.UcanaccessSQLException: user lacks privilege or object not found: DOUBLE BOOKING

1 个答案:

答案 0 :(得分:3)

由于Tom旨在成为字符串文字,因此您需要添加引号字符:

"SELECT * FROM [Double Booking] WHERE [Name] = 'Tom'"

那就是说,如果'Tom'只是一个例子,如果可能的话,最好使用参数化查询。