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