首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

数据库有关问题?

2013-10-21 
数据库问题???package cn.itcast.demoimport java.sql.Connectionimport java.sql.PreparedStatementim

数据库问题???


package cn.itcast.demo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

import cn.itcast.utils.JdbcUtils;

public class Demo4 {
/**
 * 获取自动生成的主键
 create table test1
 (
 id int primary key auto_increment,
 name varchar(20)
 );
 */
@Test
public void test(){
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;

try {
conn=JdbcUtils.getConnection();
String sql="insert into test1(name) values(?)";
st=conn.prepareStatement(sql);
st.setString(1,"aaa");
st.executeUpdate();

rs=st.getGeneratedKeys();
if(rs.next()){
System.out.println(rs.getInt(1));
//System.out.println(rs.getInt("id"));//为什么不能这样写呢???
}
} catch (Exception e) {

e.printStackTrace();
}

}
}





java中对于id的值为什么不能这样取呢,System.out.println(rs.getInt("id"));
错误提示是:java.sql.SQLException: Column 'id' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:987)
at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:2749)
at cn.itcast.demo.Demo4.test(Demo4.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
数据库 sql
[解决办法]
那你像上面说的调用rs.getMetaData()看看

[解决办法]
引用:
Quote: 引用:

通过getGeneratedKeys方法返回的只有一列,并且列名是GENERATED_KEYS,你可以通过
rs.getInt(1)  或者  rs.getInt("GENERATED_KEYS")来获取,但是你用rs.getInt("id")肯定是不行的。
System.out.println(rs.getInt("GENERATED_KEYS"));这样不行,报错: Column 'GENERATED_KEYS' not found.



那你用rs.getMetaData()看看啊,不就知道列名是什么了。

热点排行