【问题标题】:java.sql.SQLSyntaxErrorException: ORA-00911: invalid character in oracle 11gjava.sql.SQLSyntaxErrorException: ORA-00911: oracle 11g 中的无效字符
【发布时间】:2023-03-20 07:58:01
【问题描述】:

当我尝试将数据插入到 oracle 11g 数据库中时,我收到标题中的错误。这是我使用的表格详细信息和功能:

private static void insertDetails() throws Exception{
        Scanner sc=new Scanner(System.in);
        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","AJ204","pract");  
        System.out.println("Connected database successfully...");
        PreparedStatement ps=null;
        ps=con.prepareStatement("INSERT INTO `STUDENT_PERS_DETAILS`(ENROLL_NO,NAME,GENDER,PERMANENT_ADDRESS_HOUSE_NO.,PERMANENT_ADDRESS_STREET_NAME,PERM._ADDR._NEAREST_LANDMARK,PERM._ADDR._PINCODE,CONTACT_NO.,EMAIL_ADDRESS,AADHAR) VALUE (?,?,?,?,?,?,?,?,?,?)");
        System.out.println("Enter the student's details");
        System.out.println("Enroll_No:");
        long enroll_no=sc.nextLong();
        ps.setLong(1, enroll_no);
        System.out.println("Name:");
        sc.nextLine();
        String name2=sc.nextLine();
        ps.setString(2, name2);
        System.out.println("Gender:");
        String gndr=sc.nextLine();
        ps.setString(3, gndr);
        System.out.println("Permanent Address details:");
        System.out.println("\tHouse No.:");
        String house_no=sc.nextLine();
        ps.setString(4, house_no);
        System.out.println("\tStreet Name:");
        String street=sc.nextLine();
        ps.setString(5, street);
        System.out.println("\tNearest Landmark:");
        String landmark=sc.nextLine();
        ps.setString(6,landmark);
        System.out.println("\tPincode:");
        long pincode=sc.nextLong();
        ps.setLong(7, pincode);
        System.out.println("Contact No.:");
        long cntct_no=sc.nextLong();
        ps.setLong(8, cntct_no);
        System.out.println("Email:");
        String email=sc.nextLine();
        ps.setString(9,email);
        System.out.println("Aadhaar No.:");
        long aadhaar_no=sc.nextLong();
        ps.setLong(10, aadhaar_no);
        System.out.println("Set success");
        int n=ps.executeUpdate();
        System.out.println("Updated");
        ps.close();
        con.close();
    }

【问题讨论】:

  • 如何格式化这段代码?
  • 如果你能让它更容易阅读,那就太好了。同时删除图片链接并放入问题中
  • `STUDENT_PERS_DETAILS` 是 SQ 中的无效标识符:docs.oracle.com/database/121/SQLRF/…
  • 将 VALUE 更改为 VALUES
  • 尝试使用任何 sql 客户端应用程序生成无错误查询

标签: java oracle jdbc


【解决方案1】:

您的 SQL 语句结果如下:

INSERT INTO `STUDENT_PERS_DETAILS` (
    ENROLL_NO,
    NAME,
    GENDER,
    PERMANENT_ADDRESS_HOUSE_NO.,
    PERMANENT_ADDRESS_STREET_NAME,
    PERM._ADDR._NEAREST_LANDMARK,
    PERM._ADDR._PINCODE,
    CONTACT_NO.,
    EMAIL_ADDRESS,
    AADHAR) 
VALUE 
    (?,?,?,?,?,?,?,?,?,?)

它有几个错误:

  • 表名不能用反引号括起来,删除它们
  • 列名不能包含点.(除非双引号,但这没有用)
  • 关键字VALUE必须是VALUES

【讨论】:

    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多