我遇到了一些关于从 ms access 数据库中检索数据的问题
Posted
技术标签:
【中文标题】我遇到了一些关于从 ms access 数据库中检索数据的问题【英文标题】:I am getting some issues regarding retrieving data from ms access database 【发布时间】:2016-10-23 14:10:50 【问题描述】:我正在尝试从数据库中检索数据,但遇到了一些问题。 这是我的代码:
try
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://F:\\Realestate\\real estate.accdb");
Statement st=conn.createStatement();
String sql="select Property type,Property owner from property where Property type='"+searchbyidfld.getText()+"'and Property owner='"+searchbynamefld.getText()+"'";
ResultSet rs=st.executeQuery(sql);
if(rs.next())
String retrieve=rs.getString("Property type");
System.out.println(retrieve);
catch(Exception ex)
JOptionPane.showMessageDialog(null,"No record found");
我还在 URL 中提供了数据库的正确路径。 这是我试图从中检索数据的数据库 我不知道我做错了什么。
这是堆栈跟踪:
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 user lacks privilege or object not found: PROPERTY
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 user lacks privilege or object not found: PROPERTY
at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:211)
at real.estate.Loginbtn$4$27$9$11.actionPerformed(Loginbtn.java:1691)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6535)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
【问题讨论】:
“但我遇到了一些问题”——你遇到了什么问题。请明确点。是例外吗?堆栈跟踪是什么?它在您的源代码中的哪一行?人们不会运行您的代码来查找 - 因为我们没有您的数据库架构,这无论如何都很难。 @ErwinBolwidt 不,它没有给我任何例外 包含空格的列名必须用方括号括起来,例如select [Property type], [Property owner] from property ...
那么您遇到了什么问题?
您的代码也容易受到 SQL 注入 问题的影响。 (想象一下如果 [property owner] 是Sally O'Malley
会发生什么。)您应该使用PreparedStatement
来执行参数化查询。
【参考方案1】:
在你的代码中试试这个String sql="select [Property type],[Property owner] from property where [Property type]='"+searchbyidfld.getText()+"'and [Property owner]='"+searchbynamefld.getText()+"'";
包含空格的列名应该用方括号括起来。我希望这对你有用
【讨论】:
以上是关于我遇到了一些关于从 ms access 数据库中检索数据的问题的主要内容,如果未能解决你的问题,请参考以下文章