我用Java编一个数据库程序时遇到了个奇怪的问题,如下
public class IBoardImple extends DatabaseOperate implements IBoard {
private int parentId = 0;
private List subList = null;
private HashMap map = new HashMap();
private Connection conn = null;
private PreparedStatement statement = null;
private ResultSet rs = null;public Map FindBoardMap() {
String sql = "select * from TBL_BOARD order by boardId";
try{
conn = this.GetConnection();
statement = conn.prepareStatement(sql);
rs = statement.executeQuery();
subList = new ArrayList();
while(rs.next()){
System.out.print("boardId:"+rs.getInt("boardId"));
System.out.println("\tparentId:"+rs.getInt("parentId"));
}}
当我这样写时就能顺利编译
但是当我把最后两行多输出一个字段时,改成这样(TBL_BOARD表中一共就有这三个字段)
while(rs.next()){
System.out.print("boardId:"+rs.getInt("boardId"));
System.out.print("\tparentId:"+rs.getInt("parentId"));
System.out.println("\tboardName:"+rs.getString("boardName"));}
就会出现提示错误,我的列名都写的对着呢,错误提示我给出第一行
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引,这是为什么,怎么解决?
public class IBoardImple extends DatabaseOperate implements IBoard {
private int parentId = 0;
private List subList = null;
private HashMap map = new HashMap();
private Connection conn = null;
private PreparedStatement statement = null;
private ResultSet rs = null;public Map FindBoardMap() {
String sql = "select * from TBL_BOARD order by boardId";
try{
conn = this.GetConnection();
statement = conn.prepareStatement(sql);
rs = statement.executeQuery();
subList = new ArrayList();
while(rs.next()){
System.out.print("boardId:"+rs.getInt("boardId"));
System.out.println("\tparentId:"+rs.getInt("parentId"));
}}
当我这样写时就能顺利编译
但是当我把最后两行多输出一个字段时,改成这样(TBL_BOARD表中一共就有这三个字段)
while(rs.next()){
System.out.print("boardId:"+rs.getInt("boardId"));
System.out.print("\tparentId:"+rs.getInt("parentId"));
System.out.println("\tboardName:"+rs.getString("boardName"));}
就会出现提示错误,我的列名都写的对着呢,错误提示我给出第一行
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]无效的描述符索引,这是为什么,怎么解决?
必须按照表中列名的顺序读取,不然就会出现这个错误错误. 如果数据库定义顺序:
name
password
power
取值时一定要按下面顺序来取:
rs.getString("name")
rs.getString("password")
rs.getString("power")
问题可以解决.
不知道你是不是这情况,你可以试下,不敢保证有效。