netbeans 如何使用属性“CS1310”或“MATH 1510”引用元组?我尝试了getChar,但没有成功

xdnvmnnf  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(141)

我找不到正确的函数来引用我的程序中的Course_number(CS1310,MATH1510)。我试过使用getChar或getCharacter或GetCharAT,但仍然不起作用,并且一直出错。请有人能帮助我。
错误:
线程“main”中出现异常java.sql.SQLDataException:无法从字符串“CS1310”确定值类型

public class university123 {

    public static void main(String args [])
            throws SQLException, IOException, IOException{
        try{
            Class.forName("com.mysql.cj.jdbc.Driver");// maybe need to delete 'cj'
        }catch (ClassNotFoundException x){
            System.out.println ("Driver could not be loaded");

        }
        Scanner input = new Scanner(System.in);

        String dbacct, passwrd, course_name,instructors;
        Character course_number, grade, prerequisite_number; // *error
        int credit_hours, Student_number;

        System.out.println("Enter user name(root)"); 
        String user = input.nextLine(); 
        System.out.println("Enter password (of root)"); 
        String pass = input.nextLine();
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/university",user,pass);
        String q = "select course_name, course_number, credit_hours from COURSE";
        Statement s = conn.createStatement();
        ResultSet r = s.executeQuery(q);
        while (r.next()){
            course_name = r.getString(1);
            course_number = r.getCharacter(2); //***error
            credit_hours = r.getInt(3); 
        System.out.println(course_name + course_number + credit_hours);    
        }
    }

}
cxfofazt

cxfofazt1#

你说:
course_number = r.getCharacter(2); //***error
没有ResultSet#getCharacter这样的方法。请参阅Javadoc for ResultSet
你说:
我已尝试使用getChar、getCharacter或GetCharAT
这些方法都不是ResultSet上的方法,与其胡乱猜测可能的方法名,为什么不阅读文档呢?
顺便说一句,您的代码还有其他问题。
char类型及其 Package 器Character类表示单个字符。我不明白您打算如何使用单个字符来表示课程编号,例如CS 1310 & MATH 1510。
此外,您应该避免char/Character,因为该类型从Java 2开始就已存在,基本上已被破坏。作为一个16位值,它在物理上无法表示大多数字符。要处理单个字符,请使用code point整数。
最好关闭ConnectionStatementResultSet等资源。使用try-with-resources语法可以使这一操作变得简单。
遵循Java的命名惯例,让代码更容易阅读。变量的名字以小写字母开始。我们通常避免使用下划线。所以studentNumber而不是Student_number
你说:
String q = "select course_name, course_number, credit_hours from COURSE";
我建议养成一个习惯,总是用分号正确地终止SQL语句:String q = "select course_name, course_number, credit_hours from COURSE ;" ;
我可以看到,在上面这样的行中,您混淆了大小写。我建议您使用全部小写或全部大写,而不是在列名上使用一个而在表名上使用另一个。为了在数据库之间获得最大的可移植性,请使用全部小写。请注意,SQL标准要求所有数据库仅以全部大写存储名称,但我所知道的每个数据库都不符合这一要求。而且,为了避免与许多保留关键字中的任何一个发生名称冲突,请在所有SQL标识符上使用尾随下划线。2 SQL标准明确承诺绝不在任何保留字中使用尾随下划线。
在问题中不要提及列的确切数据类型。在询问有关Java-SQL的问题时,请始终注意确切的数据类型。

b0zn9rqh

b0zn9rqh2#

我只需要把信息设置为“String”:(2)将字符串转换为字符串;

public class university123 {

    public static void main(String args [])
            throws SQLException, IOException, IOException{
        try{
            Class.forName("com.mysql.cj.jdbc.Driver");// maybe need to delete 'cj'
        }catch (ClassNotFoundException x){
            System.out.println ("Driver could not be loaded");

        }
        Scanner input = new Scanner(System.in);

        String dbacct, passwrd, course_name,instructors, course_number, grade, prerequisite_number; 
        int credit_hours, Student_number;

        System.out.println("Enter user name(root)"); 
        String user = input.nextLine(); 
        System.out.println("Enter password (of root)"); 
        String pass = input.nextLine();
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/university",user,pass);
        String q = "select course_name, course_number, credit_hours from COURSE";
        Statement s = conn.createStatement();
        ResultSet r = s.executeQuery(q);
        while (r.next()){
            course_name = r.getString(1);
            course_number = r.getString(2); 
            credit_hours = r.getInt(3); 
        System.out.println(course_name + course_number + credit_hours);    
        }
    }

}

相关问题