Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连接到NetBeans中的数据库失败(错误ora-00933)_Java_Mysql_Sql_Netbeans_Database Connection - Fatal编程技术网

Java 连接到NetBeans中的数据库失败(错误ora-00933)

Java 连接到NetBeans中的数据库失败(错误ora-00933),java,mysql,sql,netbeans,database-connection,Java,Mysql,Sql,Netbeans,Database Connection,对于学校项目,我正在使用一个简单的数据库(名称、艺术家、长度、专辑…)制作音乐播放器,我已经完成了1/2,但现在当我尝试连接到学校数据库时,出现了一个错误: ORA-00933:SQL命令未正确结束。 我已经检查了我的代码一千次,但没有发现错误这是连接部分(和sql命令): try{ String name=display.getText(); String url="jdbc:oracle:thin:@193.2.139.248:1521:ers"; Class.forName("oracl

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

ORA-00933:SQL命令未正确结束。

我已经检查了我的代码一千次,但没有发现错误这是连接部分(和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.close放入finally中,以确保它不会意外关闭连接

finally
{
pb.close()
}

还可以尝试手动运行该查询,因为它可能与查询本身有关

变量
名称
选择
查询中未正确使用

使用
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();

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
是一个字符串,您需要在单引号中指定它

尝试执行以下操作(“从歌曲、唱片、艺人中选择Song.name、Artister.name、Album、Artister where Song.Album_ID=Album.ID和Album.Artister_fk=Artister.ID和Song.name=“+name+”;”;