只有一个参数的话,百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(),怎么才能回到第一个结果等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)