数据库查询
Posted Kooing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库查询相关的知识,希望对你有一定的参考价值。
DatabaseMetaData metadata1=con.getMetaData(); ResultSet rs1=metadata1.getColumns(null, null,"goods", null);
连接对象con调用getMetaData()方法,获得一个DatabaseMetaData对象,
对象调用getColumns,可以把字段信息保存在一个ResultSet对象中,参数分别是”数据库名“,”数据库扩展名“,"表名”,“字段名”
控制游标查询
有时候不是靠next()的顺序查询就能解决问题
在sql对象获得链接对象con是加两个参数
Statement stme=con.createStatement(int type,int concurrency)
type的取值决定了滚动方式
ResultSet.TYPE_FORWORD_ONLY//只能向下移动
ResultSet.TYPE_SCROLL_INSENSITIVE//可以上下移动,当数据库变化是当前结果集不变
RseultSet.TYPE_SCROOL_SENSITIVE//可以上下移动,数据库变化是当前结果集同步变化
Concurrency决定了是否可以用结果更新数据库
ResultSet.CONCUR_READ_ONLY//不能用结果更新数据库的表
ResultSet.CONCUR_UPDATABLE//不能~~~~
还有ResultSet的滚动方法
public void previous()//相对的next,上面移动 public void beforeFirst()//游标移动到第一行前面 public void afterLast()//游标移动到最后一行后面 public void first()//游标移动到第一行 public void last()//游标移动到最后一行 public boolean isAfterLast()//判断是否最后一行后面 public boolean isBeforeFirst()//判断是否第一行之前 public boolean ifFirst()//是否第一行 public boolean isLast()//是否最后一行 public int getRow()//返回行号 public boolean absolute(int row);//把游标移动到row指定的行
测试代码(倒叙输出
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=Kooing","sa","kenn5666225"); System.out.println("数据库连接成功"); DatabaseMetaData metadata1=con.getMetaData(); ResultSet rs1=metadata1.getColumns(null, null,"goods", null); int raws=0; for(;rs1.next();){ raws++; } Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rs2=sql.executeQuery("select * from goods"); rs2.last(); for(;!(rs2.isBeforeFirst());rs2.previous()){ for(int i=1;i<=raws;i++){ System.out.print(" "+rs2.getString(i)+" "); } System.out.println(""); }
以上是关于数据库查询的主要内容,如果未能解决你的问题,请参考以下文章