编辑:我通过一个错误解决了插入问题,因此我删除了该部分问题,但对于long类型错误仍然具有Bad值。
编辑:小型公司表的创建语句
create table small_company
(
first_name varchar(20),
last_name varchar(30),
address text,
emp_id serial not null
)
;
创建于:
create table company
(
first_name varchar(20),
last_name varchar(30),
company_name text,
address text,
city varchar(30),
province text,
postal varchar(7),
phone1 text,
phone2 text,
email text,
web text
)
;
create index name_priority
on company (first_name)
;
我收到此错误,提示“ long类型的值不正确:”
// insert values into the "small_company" table
long insertEmp(String first_name, String last_name, String address) {
String sql = "insert into small_company values (?,?,?)";
long id = 0;
try {
Connection conn = connect();
PreparedStatement pstmt = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
pstmt.setString(1,first_name);
pstmt.setString(2,last_name);
pstmt.setString(3,address);
int affectedRows = pstmt.executeUpdate(); // returns number of affected rows
if (affectedRows > 0) { // means a row was affected so get the ID
try {
ResultSet rs = pstmt.getGeneratedKeys();
if (rs.next()) {
id = rs.getLong(1); // if cursor finds row with id, return it
}
}
catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
catch (SQLException e){
System.out.println(e.getMessage());
}
return id;
}
public static void main(String[] args) {
Queries q1 = new Queries();
//q1.getRowCount("company");
//q1.displayTable();
//q1.displayCompany(); // <- what I use to display table!
//q1.findEmployee(10);
q1.insertEmp("Laura","Lane","Daily St. Planet co. NE"); //<-what I use to insert!
}
非常感谢所有帮助!
答案 0 :(得分:1)
small_company
中的第一列是first_name
,您不能在varchar列上使用getLong()
。您必须改用getLong("emp_id")
。
或者,您可以告诉JDBC驱动程序仅返回emp_id
:
PreparedStatement pstmt = conn.prepareStatement(sql,new String[]{"emp_id"});
然后getLong(1)
应该可以正常工作,并且只返回一列(至少使用最新的JDBC驱动程序)。