我找不到正确的函数来引用我的程序中的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);
}
}
}
2条答案
按热度按时间cxfofazt1#
你说:
course_number = r.getCharacter(2); //***error
没有
ResultSet#getCharacter
这样的方法。请参阅Javadoc forResultSet
。你说:
我已尝试使用getChar、getCharacter或GetCharAT
这些方法都不是
ResultSet
上的方法,与其胡乱猜测可能的方法名,为什么不阅读文档呢?顺便说一句,您的代码还有其他问题。
char
类型及其 Package 器Character
类表示单个字符。我不明白您打算如何使用单个字符来表示课程编号,例如CS 1310 & MATH 1510。此外,您应该避免
char
/Character
,因为该类型从Java 2开始就已存在,基本上已被破坏。作为一个16位值,它在物理上无法表示大多数字符。要处理单个字符,请使用code point整数。最好关闭
Connection
、Statement
和ResultSet
等资源。使用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的问题时,请始终注意确切的数据类型。
b0zn9rqh2#
我只需要把信息设置为“String”:(2)将字符串转换为字符串;