oracle如何反向遍历的简单介绍

oracle中如何根据表中一个字段遍历数据

写个for循环就可以遍历一遍,例如meminfo 表中有member_id 你现在有的id需要在meminfo 中查询出现次数

创新互联公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!为您提供网站制作、成都网站制作、成都网页设计、成都微信小程序、成都网站开发、成都网站制作、成都软件开发、重庆APP软件开发是成都本地专业的网站建设和网站设计公司,等你一起来见证!

declare

i number(5);

id number(15);

begin

for rec in(select member_id from meminfo) loop

if member_id=id

then i:=i+1;

end if;

end;

这样就会遍历一遍你的这个数据库

oracle如何实现遍历查询?

declare

teacher_name varchar(20)------------跟teacher表中老师名字类型保持一致

cursor t_name is select teachername from teacher---------申明游标t_name为从teacher表中查询老师名字

begin

open t_name;------打开游标t_name

loop-------开始循环(遍历)

fetch t_name into teacher_name-------将老师名字值赋予变量teacher_name

if t_name%found-------------开始遍历有值时插入以下数据

then

select name,count(*) into new_table

from table_teacher_student

where name=teacher_name group by name-----将一个老师名字依据条件插入新表数据

else

dmbs_output.put_line(‘完成所有工作’);---------遍历结束时输出完成工作

exit;

end if;

end loop;

仓促写下以上内容,可能部分语法报错,思路就是这样,很基本的一个游标使用。

如何用Oracle数据库实现反向工程

用PowerDesigner逆向工程导出ORACLE数据库表结构:1、输入数据库用户名和密码,点击【OK】,提示【ConnectionSuccessful】则表示连接成功;2、点击【OK】—【确定】,完成数据源添加;3、选择菜单【Database】—【UpdateModelfromDatabase】,选择【Usingadatasource】,点击右侧的选择按钮;4、选择【ODBCmachinedatasource】,下拉菜单中选择刚才配置好的数据源,填好登录数据库用户名【UserID】和密码【Password】,点击【Connect】;5、点击【确定】;6、在表格清单里选择要导出的表,点击【OK】;7、反向成功后的视图;

oracle 反向查询 字段

SELECT TABLE_NAME,COLUMN_NAME

FROM USER_TAB_COLUMNS WHERE TABLE_NAME='TMPXXX'

AND COLUMN_NAME NOT IN ('你不想要的字段')

java问题,高分悬赏!!!

首先要有一个可以连接的数据库,其次使用下面这个文件(流行的三种数据库连接);另外的Main函数和类自己写吧.sqlStr用恰当的SQL语句代替.

package db;

import java.sql.*;

//import com.mysql.jdbc.Driver;//导入MYSQL数据库驱动

//import oracle.jdbc.driver.OracleDriver;//ORACLE的

//MSSQL的其实不用import进来也行的.但是在编译时,必须要把这些"必需的库"加进来.

/*下面是MYSQL的连接设置*/

/**driver name would be loaded {@link #getConnection()}*/

private final String driverName = "com.mysql.jdbc.Driver"; //要加载的驱动名称

/**url to connect {@link #driverName}*/

private String url = "jdbc:mysql://localhost:3306/dabaseName";//连接的URL

private String user = "root";//数据库用户名

private String password = "123456";//数据库登陆密码

/*下面是ORACLE thin连接设置*/

private String driverName = "oracle.jdbc.driver.OracleDriver"; //driver name

private String url = "jdbc:oracle:thin:@//192.168.18.16:1521/databaseName";

/*对于Oracle 推荐这样写:jdbc:oracle:thin://192.168.18.16:1521:databaseName

private String user = "username";

private String password = "userpassword";

/*下面是SQLserver连接设置*/

private String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";

private String url = "jdbc:microsoft:sqlserver://localhost:1433;databaseName=test";

private String user = "aaa";

private String password = "123";

/*下面是通用的*/

private Connection conn = null;//

private Statement stmt = null;//

private PreparedStatement pst = null;//

private ResultSet rs = null;//

/*加载驱动*/

try{

Class.forName(driverName);//.newInstance();

com = DriverManager.getConnection(url,user,password);//获取连接;

stmt = conn.createStatement();//

rs = stmt.executeQuery(sqlStr);//执行一次查询sqlStr = "select * from tablename";

stmt.executeUpdate(sqlStr);//添加,删除,修改sqlStr = "delete from table ";

stmt.close();

conn.close();

}

catch (Exception e){

e.printStackTrace();//打印异常到后台

}

/*****以下是一个完全的实例********************/

/**

*@(#) DbManager.java 1.00 2007/07/26

*

*Copyright (c) 2007

*

*this class is.....

*/

package query;

import java.sql.*;

//import oracle.jdbc.driver.OracleDriver;

/**

* DB Manager for Oracle

*

*@author lijm

*@version $id:2007

*@bug bug description

*@concurrency concurrency des

*@copyright 2007 des

*@example des

*/

public class DbManager

{

/**driver name would be loaded {@link #getConnection()}*/

private final String driverName = "com.mysql.jdbc.Driver"; //driver name

/**url to connect {@link #driverName}*/

private String url = "jdbc:mysql://localhost:3306/ljm2";

private String user = "root";//"together";

private String password = "123456";//"wowinmylife2005";

private Connection conn = null;

private Statement stmt = null;

private PreparedStatement pst = null;

private ResultSet rs = null;

/*************************************

**构造函数,创建连接和语句

*@see #getConnection()

*@throws Exception if getConnection failed

*******************************/

public DbManager() throws SQLException

{

try {

conn = getConnection();

}

catch (SQLException e)

{

System.out.println("创建数据库连接失败!");

throw e;

}

try {

stmt = conn.createStatement();

}

catch (SQLException e){

System.out.println("创建语句失败");

throw e;

}

}

/****************************

**连接数据库.

*p detail remark 1{@link #DbManager()}/p

*p detail remark 2/p

*****************************/

public Connection getConnection()

throws SQLException/*,ClassNotFoundException,java.lang.InstantiationException,java.lang.IllegalAccessException*/

{

try

{

Class.forName(driverName);//.newInstance();

return DriverManager.getConnection(url,user,password);

}

catch (ClassNotFoundException e)

{

System.out.println("加载驱动类 : " +driverName+ " 失败!");

e.printStackTrace();

throw new SQLException("没有找到驱动类");

}

catch (SQLException e){

System.out.println("连接数据库失败");

e.printStackTrace();

throw e;

}/*

catch (java.lang.InstantiationException e){

System.out.println("实例化驱动程序失败");

throw new SQLException("实例化驱动程序失败");

}

catch (java.lang.IllegalAccessException e){

System.out.println("实例化驱动程序失败");

throw new SQLException("实例化驱动程序失败");

}*/

catch (Exception e){

throw new SQLException("其它异常");

}

//return conn;

}

/**********************************

**执行数据库查询

*@param sqlStr sql statement

*@return 查询结果集

*********************************/

public ResultSet execQuery(String sqlStr) throws SQLException

{

try

{

rs = stmt.executeQuery(sqlStr);

}

catch (SQLException e)

{

System.out.println("查询数据失败");

e.printStackTrace();

throw e;

}

return rs;

}

/*************************

**执行数据库更新(插入记录,更新记录,删除记录

*@param sqlStr

**********************************/

public void execUpdate(String sqlStr) throws SQLException

{ boolean update = true;

try

{

stmt.executeUpdate(sqlStr);

//return true;

}

catch (SQLException e)

{ System.out.println("更新失败");

e.printStackTrace();

update = false;

throw e;

}

}

/****************************

**关闭连接;释放资源(手动).

*在程序中要记得连接的关闭,不然的话会引起很多的SQL异常

***************/

public void close()

{

try {

if (stmt != null){

stmt.close();

stmt = null;

}

conn.close();

conn = null;

}

catch (SQLException e){

System.out.println("关闭数据库连接失败!");

e.printStackTrace();

}

}

/**********************

**测试本文件(DbManager.java)

***************/

public static void main(String [] args){

try{

DbManager dbm = new DbManager();

ResultSet rs = dbm.execQuery("select * from req_bill_operate_table where dt_operatetime like ''");

if(rs.next()){

System.out.println("rs in not null in main");

}

dbm.close();

System.out.println("ather main try");

}

catch (SQLException e){

System.out.println("e in main :" +e.getMessage()+ "\t cause:" +e.getCause());

//e.printStackTrace();

}

//dbm.execUpdate("create table ljmmm( id number)");

}

}

或者你也可以试试以下的程序

准备工作:

1、jar包放在C:\Program Files\Java\jdk1.5.0_09\jre\lib\ext中

2、在eclipse中:项目名-属性-java构建路径-添加外部jar包

/*

*本示例代码详细说明了如何在Java中利用JDBC直接连接到SQL Server 2000数据库,包括使用SQl 2000驱动(三个jar包),

*以及使用SQL 2005包(一个包)的两种情况

*/

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import java.sql.*;

public class DBManagerSQL {

ResultSet rs;

String strurl="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=testDB";//2、SQL 2000 三个包时

//String strurl="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=testDB";//1、驱动为SQL 2005时,sqljdbc.jar

public DBManagerSQL(){}

public ResultSet getResult(String sql)

{

try{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//2、SQL 2000三个包时

//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //2、驱动为SQL 2005时,sqljdbc.jar

Connection con=DriverManager.getConnection(strurl,"sa","sa");

executeUpdate、execute

con.createStatement(int resultSetType,int resultSetConcurrency)

resultSetType定义结果集类型:TYPE_FORWARD_ONLY,结果集的游标只能向前移

TYPE_SCROLL_INSENSTIVE,结果集游标可以前后移动,结果集不反映表中数据变化

TYPE_SCROLL_SENSITIVE,结果集游标可以前后移动,结果集立即反映表中数据变化

resultSetConcurrency定义结果集的更新方式:

CONCUR_UPDATABLE,可以进行更新操作

CONCUR_READ_ONLY,不可以进行更新操作

示例:反向遍历数据表

st=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

rs=st.executeQuery(sql);

rs.afterLast;//将游标指向结果集结束

while(rs.previous())

{

System.out.println(rs.getString(1));//此处为第一列!也可以使用列名

}

Statement stmt=con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

//ResultSet包含符合SQL语句中条件的所有行,等价于一张表,其中有查询所返回的列标题及相应的值。通过get方法可以访问这些行中的数据

//ResultSet维持一个指向当前行的指针,最初指向第一行之前。通过ResultSet.next方法移动到下一行,返回值True/false

ResultSet rs=stmt.executeQuery(sql);

return rs;

}

catch(Exception e)

{

System.out.println("Exception:"+e.toString());

return null;

}

}

public boolean executeSql(String sql)

{

try

{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

Connection conn=DriverManager.getConnection(strurl,"sa","sa");

Statement stmt=conn.createStatement();

stmt.executeUpdate(sql);

conn.commit();

return true;

}

catch(Exception e)

{

System.out.println("Exception:"+e.toString());

return false;

}

}

public static void main(String args[])

{

DBManagerSQL db=new DBManagerSQL();

ResultSet rs1=null;

try{

rs1=db.getResult("select * from student");

System.out.println("****");

while(rs1.next())

{

System.out.println(rs1.getString(1));//此处为第一列!也可以使用列名getString("sno")

//getInt()可以将指定字段以Int类型返回,其他类推

}

}

catch(SQLException e)

{

System.out.println("========================"+e.toString());

}

//***********************下为记录的插入,删除,更新操作****************************

String sqlstr="insert into student values('200501013','刘玲','女')"; //注意引号

// String sqlstr="delete from student where sname='刘玲'";

//String sqlstr="update student set sex='女'where sname='张三'";

db.executeSql(sqlstr);

//*********************断开连接**************************

// 一般顺序为ResultSet--Statement-- Connection

/*//示例

try{

if(rs!=null)

{rs.close();}

if(stmt!=null)

{stmt.close();}

if(conn!=null!conn.isclosed())

{conn.close();}

}

catch(SQLException e){

e.printStackTrace();

}

*/

try{

if (rs1!=null) rs1.close();

}

catch(SQLException e)

{

//System.out.println("========================"+e.toString());

e.printStackTrace();

}

}

}

实在不行下面一种也行

import java.sql.*; //导入sql库

public class DBStu { //建一个类,类名为DBStu.

public boolean insert(String name,String sex,int num){//建一个公共的方法有boolean的返回值

Connection con = null; //初始化连接对象

PreparedStatement pstmt = null; //初始化执行语句对象

boolean list = false; //新建boolean变量为false;

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载连接数据库存的驱动

} catch (ClassNotFoundException ex) { //捕获异常

}

try {

con = DriverManager.getConnection("jdbc:odbc:dbName"); //用ODBC方法连接数据源,数据源名为dbName.

String sql = "insert into student values(?,?,?)"; //创建sql语句,语句意思为插入数据.

pstmt = con.prepareStatement(sql); //执行该语句.

pstmt.setString(1,name); //在语句里添加值,里面的1对应的第一个问号,由name得到的值填入

pstmt.setString(2,sex); //与上同意

pstmt.setInt(3,num); //与上同意.

int count = pstmt.executeUpdate(); //用一个整型变量来接爱更新了几条语句.

list = (count0)?true:false; //用三元运算符判断如果更新至少一条语句,list就为true.

} catch (SQLException ex1) { //捕获异常

list = false; //如果有异常则为假

}finally{

try {

pstmt.close(); //关闭执行语句

con.close(); //关闭连接语句

} catch (SQLException ex2) { //捕获异常

}

}

return list; //返回它的值,如果为真,则这个方法插入数据成功了.

}

}

下面是理论

..........完全是代码啊

第一步:在构造函数里面使用Class.forName加载驱动

第二步:在构造函数中使用DriverManager.getConnection(地址,用户,密码)得到链接。

第三步:得到预编译对象PreparedStatement ps = conn.createPreparedStatement ();

第四步:得到结果集ResuletSet rs = ps.executeQuely(SQL语句)

或者是添加,修改,删除 boolean b = ps.executeUpdata(SQL语句)

建议你开一下jdbc的书籍,你会明白为什么这么做的,理解了问题就简单了,好多的事情IDE可以做,知道原理就可以了

首先要知道JAVA里面3个操作数据库的接口

CONNECTION STATEMENT REAULTSET

然后用Class.forName加载驱动

用Drivermanager.getConnection();建立连接

然后用CONNECTION的对象 createStatement();

然后就可以用得到的Statement对象去执行SQL语句了


标题名称:oracle如何反向遍历的简单介绍
转载来于:http://myzitong.com/article/dsdgjho.html