连接NetBeans数据库失败(错误ora-00933)



对于学校项目,我正在使用一个简单的数据库(名称,艺术家,长度,专辑…)做音乐播放器,我已经完成了1/2,但现在当我试图连接到学校数据库它给了我一个错误:

ORA-00933: SQL command not properly ended.

我检查了我的代码一千次,但没有发现一个错误。下面是连接部分(和sql命令):

try{ 
String name=display.getText();
String url="jdbc:oracle:thin:@193.2.139.248:1521:ers";
Class.forName("oracle.jdbc.OracleDriver").newInstance();
Connection pb=DriverManager.getConnection(url,"username", "password");
Statement sta=pb.createStatement();
ResultSet rs=sta.executeQuery("select Song.Name, Artist.name from Song,Album,Artist where Song.Album_ID=Album.ID and Album.Artist_fk=Artist.ID and Song.name="+name);
       if(rs.next()){
           JOptionPane.showMessageDialog(rootPane, rs);
       }
       else{
           JOptionPane.showMessageDialog(rootPane, "Song not found");
       }
       pb.close();
       }
       catch(Exception e){
       JOptionPane.showMessageDialog(rootPane, e.getMessage());
       }

非常感谢!

你试过把pb。像这样关闭到finally,以确保它没有意外关闭连接

finally
{
pb.close()
}

也尝试手动运行查询,因为它可能是查询本身的问题

变量nameselect查询中没有正确使用。

使用PreparedStatement,这样作为数据一部分的任何特殊字符都可以安全地转义。

:

Statement sta=pb.createStatement();
ResultSet rs=sta.executeQuery("select Song.Name, Artist.name from Song,Album,Artist 
                                where Song.Album_ID=Album.ID 
                                  and Album.Artist_fk=Artist.ID 
                                  and Song.name="+name);

:

String sql = "select Song.Name, Artist.name from Song, Album, Artist
               where Song.Album_ID=Album.ID 
                 and Album.Artist_fk=Artist.ID 
                 and Song.name=?";
PreparedStatement pst = pb.prepareStatement( sql );
ResultSet rs = pst.executeQuery();

将SQL查询更新为:

ResultSet rs=sta.executeQuery("select Song.Name, Artist.name from Song,
Album,Artist where Song.Album_ID=Album.ID and Album.Artist_fk=Artist.ID 
and Song.name='" + name +'" ");

由于name是一个字符串,您需要在单引号

中指定它

相关内容

  • 没有找到相关文章

最新更新