ResultSet是一个结果集,怎么获得里面的数据

ResultSet是一个结果集,怎么获得里面的数据,第1张

只有一个参数的话,百if(rsnext())先判断一下,然后就看你存放的是什么类型的数据了,那个src是String类型的还是URL类型的?rsgetString(1)或者rsgetURL(1)来得到该数据的引用。在ResultSet中取数据之前都要使用rsnext()方法,一个数据的话就是if(rsnext());多个数据的话就是while(rsnext())。每次读出数据后结果集的游标自动下移。鉴于你所说只有一个参数,那么列的度索引就应该是一。

import javaioFile;

import javaioFileNotFoundException;

import javaioFileWriter;

import javaioIOException;

import javaioPrintWriter;

import javasqlConnection;

import javasqlDriverManager;

import javasqlPreparedStatement;

import javasqlResultSet;

import javasqlSQLException;

/

  java读取数据库内容并存放到文件中

  id作为文件名,相同的id只能创建一个文件

  有重复文件名就向文件中续写,id不存在就新建

  

  写入文件换行用fwwrite("\r\n");

  或者fwwrite("\n");

  @author young

 

 /

public class JavaToSQLTest {

public static void main(String[] args) throws FileNotFoundException {

PrintWriter pw = null;

FileWriter fw = null;

// 定义数据库驱动

String driver = "commicrosoftsqlserverjdbcSQLServerDriver";

// 数据库连接URL

String url = "jdbc:sqlserver://localhost:1433;DatabaseName = soft";

Connection conn = null;

String id;

String fname, lname;

try {

// pwprintln("emp_id\t\tfname\t\tlname");

// pwprintln("------\t\t------\t\t------");

// 加载数据库驱动

ClassforName(driver);

// 创建数据库连接

conn = DriverManagergetConnection(url, "sa", "1234");

// 创建预编译SQL对象

PreparedStatement ps = conn

prepareStatement("select emp_id, fname, lname from emps");

// 执行SQL,获取结果集rs

ResultSet rs = psexecuteQuery();

// 处理结果集

while (rsnext()) {

id = rsgetString("emp_id");

fname = rsgetString("fname");

lname = rsgetString("lname");

String filename = id + "txt";

// 关联文件

File file = new File(filename);

if(!fileexists()){

// 判断文件不存在就new新文件,写数据

try {

filecreateNewFile();

// java IO流和文件关联

pw = new PrintWriter(file);

pwprint(id + "\t");

pwprint(fname + "\t\t");

pwprint(lname);

pwprintln();

pwflush();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}else{

// 判断文件存在,就以FileWriter文件追加的方式写文件

try {

fw = new FileWriter(filename,true);

fwwrite(id + "\t");

fwwrite(fname + "\t\t");

fwwrite(lname);

fwflush();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

eprintStackTrace();

Systemoutprintln("加载数据库失败");

Systemexit(1);

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

Systemoutprintln("数据库连接错误");

Systemexit(1);

} finally {

if (conn != null) {

try {

// 关闭数据库连接

connclose();

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

if (pw != null) {

// 关闭IO流

pwclose();

}

if(fw != null){

try {

fwclose();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

}

}

拷贝一段给你看看:

ResultSetfirst()问题的解决方法

Statement statement =

connectioncreateStatement

(ResultSetTYPE_SCROLL_SENSITIVE,ResultCONCUR_UPDATABLE);

//或者

(ResultSetTYPE_SCROLL_INSENSITIVE,ResultCONCUR_UPDATABLE);

//TYPE_SCROLL_SENSITIVE结果集可以任意滚动,而且动态反映底层数据变化

//TYPE_SCROLL_INSENSITIVE结果集可以任意滚动,不能动态反映底层数据变化

//CONCUR_UPDATABLE结果集可以动态更新,缺点:限制并发访问。也就是说在某一时刻只能由一个用户访问

String

sql="select from table";

ResultSet rs=stmtExecuteQuery(sql);

然后就可以用rsfirst()方法了

给你个例子,你看下

ResultSet rs = null;

int row = 0;

while(rsnext()){

if(row+1==你要的行){

Systemoutprintln(rsgetObject(你要的列));

}

row++;

}

行应该是从0开始的

类应该是从1开始的(这个我不太记得了,你试试)

要想用jdbc得到一行数据,需要使用ResultSetMetaData 对象来实现,具体用法参见如下代码:

package comrongjidemo;

import javasql;

public class dataDemo {

  public dataDemo() {

  }

 

  public static void main(String[] args) {

 

    try {

      ClassforName("oraclejdbcdriverOracleDriver");

      //建立连接

      //第二步是用适当的驱动程序连接到DBMS,看下面的代码[自行修改您所连接的数据库相关信息]:

      String url = "jdbc:oracle:thin:@192168445:1521:oemrep";

      String username = "ums";

      String password = "rongji";

//用url创建连接

      Connection con = DriverManagergetConnection(url, username, password);

      Statement sta = concreateStatement();

      String sql = "select  from rbac_application ";

      ResultSet resultSet = staexecuteQuery(sql);

      while (resultSetnext()) {

        int int_value = resultSetgetInt(1);

        String string_value = resultSetgetString(2);

        String a = resultSetgetString(3);

        String b = resultSetgetString(4);

//从数据库中以两种不同的方式取得数据。

        Systemoutprintln(int_value + "  " + string_value + "  " + a + "   " +

                           b);

//将检索结果在用户浏览器上输出。

      }

      //获取结果集信息

      ResultSetMetaData resultSetMD = resultSetgetMetaData();

      Systemoutprintln("ColumnCount:" + resultSetMDgetColumnCount());

      for (int i = 1; i < resultSetMDgetColumnCount(); i++) {

        Systemoutprintln("ColumnName:" + resultSetMDgetColumnName(i) + " " +

                           "ColumnTypeName:" +

                           resultSetMDgetColumnTypeName(i));

        Systemoutprintln("isReadOnly:" + resultSetMDisReadOnly(i)

                           + "  isWriteable:" + resultSetMDisWritable(i)

                           + "  isNullable:" + resultSetMDisNullable(i));

        Systemoutprintln("tableName:" + resultSetMDgetTableName(i));

      }

 

      //关闭

      conclose();

    }

    catch (Exception ex) {

      exprintStackTrace();

    }

  }

}

ResultSetMetaData resultSetMD = resultSetgetMetaData();

GetMetaData()方法返回一个ResultSetMetaData类的对象,使用该类的方法,得到许多关于结果集的信息,下面给出几个常用的方法:

(1) getColumnCount()返回一个int值,指出结果集中的列数。

(2) getTableName(int column)返回一个字符串,指出参数中所代表列的表的名称。

(3) getColumnLabel(int column)返回一个String对象,该对象是column所指的列的显示标题。

(4) getColumnName(int column)返回的是该列在数据库中的名称。可以把此方法返回的String对象作为Resultset类的getXXX()方法的参数。不过,并没有太大的实际意义。

(5) getColumnType(int comlumn)返回指定列的SQL数据类型。他的返回值是一个int值。在javasqlTypes类中有关于各种SQL数据类型的定义。

(6) getColumnTypeName(int comlumn)返回指定列的数据类型在数据源中的名称。他的返回值是一个String对象。

(7) isReadOnly(int column) 返回一个boolean值,指出该列是否是只读的。

(8) isWriteable(int column) 返回一个boolean值,指出该列是否可写。

(9) isNullable(int column)返回一个boolean值,指出该列是否允许存入一个NULL 值。

可以。

如果想要最新的结果,就用同一个对象接收查询结果。

如果想要两个结果集,就用两个对象去接收。只要对象名称不同就行!

就像你写的。对象1 rs 和对象2 ps。。。。。。

使用

while(rsnext())

{

outprintln(rsgetString(你的字段名字) +rsgetString(你的字段名字)。。。。。);//这样就可以输入你获取的结果集中某个字段的值!以此类推输入所有的字段

}

以上就是关于ResultSet是一个结果集,怎么获得里面的数据全部的内容,包括:ResultSet是一个结果集,怎么获得里面的数据、Eclipse中如何将从数据库中查询到的结果集rs保存到文件中、oracle数据库用resultset取得结果集,如果用了rs.next(),怎么才能回到第一个结果等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9437952.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存