使用h2数据库和eclipse转换varchar数据转换报错
Data conversion error converting varchar using h2 database and eclipse
我已经将 eclipse 与 h2 数据库连接起来,并且已经创建了一个 table 并插入了一些输入。
这些是我的 classes:
CreateTable.java:
PreparedStatement ps = con.prepareStatement("CREATE TABLE IF NOT EXISTS REGISTRATION "
+ "(id INTEGER auto_increment, "
+ " first VARCHAR(255), "
+ " last VARCHAR(255), "
+ " age INTEGER, "
+ " PRIMARY KEY ( id )) ");
ps.executeUpdate();
System.out.println("Table Created");
当我执行此命令时,它会在控制台上打印 "table created"。
这是Insert.java class:
Connection con = DriverManager.getConnection("jdbc:h2:file:C:/h2/test", "sami", "");
PreparedStatement ps = con.prepareStatement("insert into REGISTRATION(first,last,age) values ('python', 'java', 24),"
+ "('jQuery', 'Angularjs', 10)");
int i = ps.executeUpdate();
System.out.println(i + " Record(s) inserted");
当我运行这个时,它会打印插入的2条记录。
这是我的 Display.java class:
Connection con = DriverManager.getConnection("jdbc:h2:file:C:/h2/test", "sami", "");
PreparedStatement ps = con.prepareStatement("select * from REGISTRATION");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt(1) + " " + rs.getInt(2) + " " + rs.getInt(3) + " " + rs.getInt(4));
}
当我 运行 这个时,它说 "Data conversion error converting "python" [22018-200]"
我已经将我的代码更改为 "prepared statement",但它并没有解决问题。
有人可以帮助我吗?
非常感谢
您无法使用 ResultSet.getInt()
读取 VARCHAR
列,请使用 ResultSet.getString()
代替第 2 列和第 3 列。
我已经将 eclipse 与 h2 数据库连接起来,并且已经创建了一个 table 并插入了一些输入。 这些是我的 classes:
CreateTable.java:
PreparedStatement ps = con.prepareStatement("CREATE TABLE IF NOT EXISTS REGISTRATION "
+ "(id INTEGER auto_increment, "
+ " first VARCHAR(255), "
+ " last VARCHAR(255), "
+ " age INTEGER, "
+ " PRIMARY KEY ( id )) ");
ps.executeUpdate();
System.out.println("Table Created");
当我执行此命令时,它会在控制台上打印 "table created"。
这是Insert.java class:
Connection con = DriverManager.getConnection("jdbc:h2:file:C:/h2/test", "sami", "");
PreparedStatement ps = con.prepareStatement("insert into REGISTRATION(first,last,age) values ('python', 'java', 24),"
+ "('jQuery', 'Angularjs', 10)");
int i = ps.executeUpdate();
System.out.println(i + " Record(s) inserted");
当我运行这个时,它会打印插入的2条记录。
这是我的 Display.java class:
Connection con = DriverManager.getConnection("jdbc:h2:file:C:/h2/test", "sami", "");
PreparedStatement ps = con.prepareStatement("select * from REGISTRATION");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt(1) + " " + rs.getInt(2) + " " + rs.getInt(3) + " " + rs.getInt(4));
}
当我 运行 这个时,它说 "Data conversion error converting "python" [22018-200]"
我已经将我的代码更改为 "prepared statement",但它并没有解决问题。
有人可以帮助我吗?
非常感谢
您无法使用 ResultSet.getInt()
读取 VARCHAR
列,请使用 ResultSet.getString()
代替第 2 列和第 3 列。