Java netbeans中的ORA-0911无效字符

Java netbeans中的ORA-0911无效字符,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,这是我在netbeans中的查询。值括号内的内容是变量 当我遇到它时,它会显示一条错误消息,显示“ORA-0911无效字符”,有什么建议可以解决这个问题吗?Oracle不使用前向引号表示列-只需丢失它们,您就可以了: String query2 = "INSERT INTO \"jadwal_guru_m\" (`kd_transaksi`, `kelas`, `mapel`, `pengajar`, `tanggal`, `hari`, `ruangan`, `waktu`)"+ " VALU

这是我在netbeans中的查询。值括号内的内容是变量


当我遇到它时,它会显示一条错误消息,显示“ORA-0911无效字符”,有什么建议可以解决这个问题吗?

Oracle不使用前向引号表示列-只需丢失它们,您就可以了:

String query2 = "INSERT INTO \"jadwal_guru_m\" (`kd_transaksi`, `kelas`, `mapel`, `pengajar`, `tanggal`, `hari`, `ruangan`, `waktu`)"+ " VALUES ('"+kode+"','"+kelas+"','"+mapel+"','"+pengajar+"','"+tanggal+"','"+hari+"','"+ruangan+"','"+waktu+"')";
st2.executeUpdate(query2);

此外,您可能应该使用
PreparedStatement
而不是concatating字符串,这样可以省去类型转换、担心SQL注入等方面的麻烦。

使用prepared语句。它是muxh复活节。而且更安全…
`
是SQL中标识符的无效字符。要么使用双引号(如果需要-这将使您的姓名区分大小写),要么根本不使用带引号的标识符(强烈建议)。关于标识符的更多细节在手册中:我想知道表名是否真的是小写的。这可能是未来的下一个问题。@Codo确实如此-尽管如果不是,错误将非常直接(ORA-942,而不是ORA-911)。@Mureinik-是的,它确实有帮助。现在我有一个使用另一个sql的分组错误。有没有一种方法可以在Oracle中使用group by或Have,因为我不熟悉这一点
String query2 = "INSERT INTO \"jadwal_guru_m\" (kd_transaksi, kelas, mapel, pengajar, tanggal, hari, ruangan, waktu) VALUES ('"+kode+"','"+kelas+"','"+mapel+"','"+pengajar+"','"+tanggal+"','"+hari+"','"+ruangan+"','"+waktu+"')";
st2.executeUpdate(query2);