关于jdbc的 无法得到resultset返回的结果 那为高手给看看

ljpro 2003-09-11 11:12:22
import java.awt.*;
import java.sql.*;
public class JDBCTest2 extends Frame{
TextArea txtArea;
public JDBCTest2(){
super("JDBCtest");
setLayout(new FlowLayout());
txtArea=new TextArea(30,80);
add(txtArea);
resize(500,500);
show();
txtArea.setText(".............\n");
}
public static void main(String[] args) throws SQLException,Exception{
String query="select * from Employees";

try{
JDBCTest myJDBCTest=new JDBCTest();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection mycnn=DriverManager.getConnection("jdbc:odbc:mdb");
if (mycnn!=null) System.out.println("database not null");

Statement mystmt=mycnn.createStatement();
if (mystmt!=null) System.out.println("stmt not null");

ResultSet myresults=mystmt.executeQuery(query);
if(myresults!=null) System.out.println("rs not null");

myJDBCTest.displayResults(myresults);
//close
myresults.close();
mystmt.close();
mycnn.close();
}
catch (SQLException ex) {
while(ex!=null){
System.out.println ("database: " +
ex.getSQLState ()+" "+ex.getErrorCode());
System.out.println ("Message: " +ex.getMessage ());
System.out.println ("Vendor: " +ex.getErrorCode ());
ex = ex.getNextException ();
System.out.println ("");
}
}
}
void displayResults(ResultSet rs)throws SQLException{

ResultSetMetaData rsmd=rs.getMetaData();
if (rsmd!=null) System.out.println("rsmd not null");

int cols=rsmd.getColumnCount();
if(cols!=0) System.out.println(cols);

txtArea.setText("");

while(rs.next()){
for(int i=1;1<=cols;i++){
if(i>1) txtArea.append("\t");
try{
txtArea.append(rs.getString(1));
}
catch(NullPointerException e){
}
}
txtArea.append("\n");
}
}
public boolean handleEvent(Event evt){
if(evt.id==Event.WINDOW_DESTROY){
System.exit(0);
return true;
}
return super.handleEvent(evt);
}


}
xp+sp1 odbc在系统中配的“mdb”在mssql中也是一样的结果 但mysql却可以正常连接用的是mysql的java驱动
...全文
62 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaobingkun 2003-11-28
  • 打赏
  • 举报
回复
当执行完查询后。游标(指针)是指向第一条记录的前面。是一个空的记录。不写next的话就会报错。
myxd 2003-09-23
  • 打赏
  • 举报
回复
好像是过早的关闭了数据库的廉洁
wufayun 2003-09-23
  • 打赏
  • 举报
回复
为什么先要rs.next();才能用rs.getString(1);
要不用的话好像会出错
noratong 2003-09-15
  • 打赏
  • 举报
回复
Connection mycnn=DriverManager.getConnection("jdbc:odbc:mdb");
应该改成:Connection mycnn=DriverManager.getConnection("jdbc:odbc:mdb","","");
后面应该还有两个参数:用户名和密码,没设的话,就填我写的这。
zhiyong82 2003-09-15
  • 打赏
  • 举报
回复
返回什么错误呢 !!
java返回的信息是什么 !
fingerfox 2003-09-15
  • 打赏
  • 举报
回复
@_@
用法:不用写连接数据库等多余代码(在ConnLink.java文件中修改一下相关属性就可以了,如果不想写分页,在ConnLink.java文件中DBlink()方法可以返回一个Statement对象,然后就可以利用这个返回值去写你想要的代码了),只要建立一个Page对象,调用SelectRS()方法,将SQL语句当前页码和每页要显示的条数正确的写入。SelectRS()会自动返回一个结果集rs,然后用rs遍历输出结果。用getFrist()、getBack()、getLast()、getNext()等方法进行取得上一页的页码,下一面的页码就可以了。 看了之后是不是很心动呢~~~ HOHO~~其实我的代码有很多不足,例如:是不是可以做成通用的分页?也可以把DBlink()中的conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jiuzhou","root","123456");用的连接参数写在xml中生成一个JAR包,这样才更有扩展性,你说呢~~。希望高手能继续改良,让这段代码更精一些。HOHO~~~~改完之的一定要发到网上供大家参考和使用。 刚刚才发现Page.java文件是空的,在这里我就加上吧!实在是不好意思了 package com.SpreadPage; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.DateBase.*; public class Page extends ConnLink{ private Statement stmt=null; private ResultSet rs=null; private int row=0; private int num=0; private int page=0; private int list=0; //搜索去向 搜索条件 当前第几页 每页条数 public ResultSet SelectRS(String select,int page_num,int page) { this.num=page_num; this.page=page; String sql=select+" limit "+(page_num*page)+","+(page_num*page+page); //System.out.println(sql); try { stmt=DBlink(); rs=stmt.executeQuery(select); rs.first(); rs.last(); this.row=rs.getRow(); System.out.println(sql); if(rs!=null) { rs.close(); } if(stmt==null) { System.out.println("Stmt无连接"); return null; } rs=stmt.executeQuery(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return rs; } //获得总记录数 public int getRow() { return row; } //第一页 public int getFrist() { return 0; } //最后一页 public int getBack() { if(getRow()%page==0) { return getRow()/page; } return (getRow()/page)+1; } //上一页 public int getLast() { if(num<=0) { return 0; } return (num-1); } //下一页 public int getNext() { int back=getBack(); if(num>=back) { return num; } return (num+1); } //当前页的条数 public int getNow() { try { rs.first(); rs.last(); list=rs.getRow(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } //当前第几页 public int getPage() { int sum=(num*page-page)+1; if(getRow()

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧