怎样用jdbc的rs得到一行数据

Useruser=null;.......................;ResultSetrs=stmt.executeQuery(sql);之后,如何将rs中的结果... User user = null;
.......................;
ResultSet rs = stmt.executeQuery(sql);
之后,如何将rs中的结果(假设只有一条数据)存放在之前定义过的user中?
即,user = rs.什么?
================
如果假设有多行数据呢?(此为延伸问题,先帮助我解答第一问,谢谢。)
展开
 我来答
pieryon
2015-08-25 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14411 获赞数:166864
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部

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

package com.rongji.demo;
import java.sql.*;
public class dataDemo {
  public dataDemo() {
  }
 
  public static void main(String[] args) {
 
    try {
      Class.forName("oracle.jdbc.driver.OracleDriver");
      //建立连接
      //第二步是用适当的驱动程序连接到DBMS,看下面的代码[自行修改您所连接的数据库相关信息]:
      String url = "jdbc:oracle:thin:@192.168.4.45:1521:oemrep";
      String username = "ums";
      String password = "rongji";
//用url创建连接
      Connection con = DriverManager.getConnection(url, username, password);
      Statement sta = con.createStatement();
      String sql = "select * from rbac_application ";
      ResultSet resultSet = sta.executeQuery(sql);
      while (resultSet.next()) {
        int int_value = resultSet.getInt(1);
        String string_value = resultSet.getString(2);
        String a = resultSet.getString(3);
        String b = resultSet.getString(4);
//从数据库中以两种不同的方式取得数据。
        System.out.println(int_value + "  " + string_value + "  " + a + "   " +
                           b);
//将检索结果在用户浏览器上输出。
      }
      //获取结果集信息
      ResultSetMetaData resultSetMD = resultSet.getMetaData();
      System.out.println("ColumnCount:" + resultSetMD.getColumnCount());
      for (int i = 1; i < resultSetMD.getColumnCount(); i++) {
        System.out.println("ColumnName:" + resultSetMD.getColumnName(i) + " " +
                           "ColumnTypeName:" +
                           resultSetMD.getColumnTypeName(i));
        System.out.println("isReadOnly:" + resultSetMD.isReadOnly(i)
                           + "  isWriteable:" + resultSetMD.isWritable(i)
                           + "  isNullable:" + resultSetMD.isNullable(i));
        System.out.println("tableName:" + resultSetMD.getTableName(i));
      }
 
      //关闭
      con.close();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}

ResultSetMetaData resultSetMD = resultSet.getMetaData();

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值。在java.sql.Types类中有关于各种SQL数据类型的定义。

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

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

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

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

迷糊百味
2014-03-29 · TA获得超过108个赞
知道答主
回答量:76
采纳率:0%
帮助的人:58.5万
展开全部
接下来应该对ResultSet迭代了:
while(rs.next()){
user = new User();

int id = rs.getInt("uid"); //uid对应数据表中的“列”名,下面的username雷同

String username = rs.getString("username");
user.setId(id);
user.setUsername(username);

}
追问
应该看什么书
追答
这是JDBC,你在百度或谷歌搜下“JDBC”这个关键词,会有很多的帖子,这是java程序跟数据库交互的基础
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞天小母猪1
2014-03-30 · 超过10用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:23.3万
展开全部
看java api
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式