寫個for循環(huán)就可以遍歷一遍,例如meminfo 表中有member_id 你現(xiàn)在有的id需要在meminfo 中查詢出現(xiàn)次數(shù)
創(chuàng)新互聯(lián)公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質(zhì)量求生存,以技術求發(fā)展,成交一個客戶多一個朋友!為您提供網(wǎng)站制作、成都網(wǎng)站制作、成都網(wǎng)頁設計、成都微信小程序、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、重慶APP軟件開發(fā)是成都本地專業(yè)的網(wǎng)站建設和網(wǎng)站設計公司,等你一起來見證!
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;
這樣就會遍歷一遍你的這個數(shù)據(jù)庫
declare
teacher_name varchar(20)------------跟teacher表中老師名字類型保持一致
cursor t_name is select teachername from teacher---------申明游標t_name為從teacher表中查詢老師名字
begin
open t_name;------打開游標t_name
loop-------開始循環(huán)(遍歷)
fetch t_name into teacher_name-------將老師名字值賦予變量teacher_name
if t_name%found-------------開始遍歷有值時插入以下數(shù)據(jù)
then
select name,count(*) into new_table
from table_teacher_student
where name=teacher_name group by name-----將一個老師名字依據(jù)條件插入新表數(shù)據(jù)
else
dmbs_output.put_line(‘完成所有工作’);---------遍歷結(jié)束時輸出完成工作
exit;
end if;
end loop;
倉促寫下以上內(nèi)容,可能部分語法報錯,思路就是這樣,很基本的一個游標使用。
用PowerDesigner逆向工程導出ORACLE數(shù)據(jù)庫表結(jié)構(gòu):1、輸入數(shù)據(jù)庫用戶名和密碼,點擊【OK】,提示【ConnectionSuccessful】則表示連接成功;2、點擊【OK】—【確定】,完成數(shù)據(jù)源添加;3、選擇菜單【Database】—【UpdateModelfromDatabase】,選擇【Usingadatasource】,點擊右側(cè)的選擇按鈕;4、選擇【ODBCmachinedatasource】,下拉菜單中選擇剛才配置好的數(shù)據(jù)源,填好登錄數(shù)據(jù)庫用戶名【UserID】和密碼【Password】,點擊【Connect】;5、點擊【確定】;6、在表格清單里選擇要導出的表,點擊【OK】;7、反向成功后的視圖;
SELECT TABLE_NAME,COLUMN_NAME
FROM USER_TAB_COLUMNS WHERE TABLE_NAME='TMPXXX'
AND COLUMN_NAME NOT IN ('你不想要的字段')
首先要有一個可以連接的數(shù)據(jù)庫,其次使用下面這個文件(流行的三種數(shù)據(jù)庫連接);另外的Main函數(shù)和類自己寫吧.sqlStr用恰當?shù)腟QL語句代替.
package db;
import java.sql.*;
//import com.mysql.jdbc.Driver;//導入MYSQL數(shù)據(jù)庫驅(qū)動
//import oracle.jdbc.driver.OracleDriver;//ORACLE的
//MSSQL的其實不用import進來也行的.但是在編譯時,必須要把這些"必需的庫"加進來.
/*下面是MYSQL的連接設置*/
/**driver name would be loaded {@link #getConnection()}*/
private final String driverName = "com.mysql.jdbc.Driver"; //要加載的驅(qū)動名稱
/**url to connect {@link #driverName}*/
private String url = "jdbc:mysql://localhost:3306/dabaseName";//連接的URL
private String user = "root";//數(shù)據(jù)庫用戶名
private String password = "123456";//數(shù)據(jù)庫登陸密碼
/*下面是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;//
/*加載驅(qū)動*/
try{
Class.forName(driverName);//.newInstance();
com = DriverManager.getConnection(url,user,password);//獲取連接;
stmt = conn.createStatement();//
rs = stmt.executeQuery(sqlStr);//執(zhí)行一次查詢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;
/*************************************
**構(gòu)造函數(shù),創(chuàng)建連接和語句
*@see #getConnection()
*@throws Exception if getConnection failed
*******************************/
public DbManager() throws SQLException
{
try {
conn = getConnection();
}
catch (SQLException e)
{
System.out.println("創(chuàng)建數(shù)據(jù)庫連接失敗!");
throw e;
}
try {
stmt = conn.createStatement();
}
catch (SQLException e){
System.out.println("創(chuàng)建語句失敗");
throw e;
}
}
/****************************
**連接數(shù)據(jù)庫.
*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("加載驅(qū)動類 : " +driverName+ " 失敗!");
e.printStackTrace();
throw new SQLException("沒有找到驅(qū)動類");
}
catch (SQLException e){
System.out.println("連接數(shù)據(jù)庫失敗");
e.printStackTrace();
throw e;
}/*
catch (java.lang.InstantiationException e){
System.out.println("實例化驅(qū)動程序失敗");
throw new SQLException("實例化驅(qū)動程序失敗");
}
catch (java.lang.IllegalAccessException e){
System.out.println("實例化驅(qū)動程序失敗");
throw new SQLException("實例化驅(qū)動程序失敗");
}*/
catch (Exception e){
throw new SQLException("其它異常");
}
//return conn;
}
/**********************************
**執(zhí)行數(shù)據(jù)庫查詢
*@param sqlStr sql statement
*@return 查詢結(jié)果集
*********************************/
public ResultSet execQuery(String sqlStr) throws SQLException
{
try
{
rs = stmt.executeQuery(sqlStr);
}
catch (SQLException e)
{
System.out.println("查詢數(shù)據(jù)失敗");
e.printStackTrace();
throw e;
}
return rs;
}
/*************************
**執(zhí)行數(shù)據(jù)庫更新(插入記錄,更新記錄,刪除記錄
*@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("關閉數(shù)據(jù)庫連接失敗!");
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構(gòu)建路徑-添加外部jar包
/*
*本示例代碼詳細說明了如何在Java中利用JDBC直接連接到SQL Server 2000數(shù)據(jù)庫,包括使用SQl 2000驅(qū)動(三個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、驅(qū)動為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、驅(qū)動為SQL 2005時,sqljdbc.jar
Connection con=DriverManager.getConnection(strurl,"sa","sa");
executeUpdate、execute
con.createStatement(int resultSetType,int resultSetConcurrency)
resultSetType定義結(jié)果集類型:TYPE_FORWARD_ONLY,結(jié)果集的游標只能向前移
TYPE_SCROLL_INSENSTIVE,結(jié)果集游標可以前后移動,結(jié)果集不反映表中數(shù)據(jù)變化
TYPE_SCROLL_SENSITIVE,結(jié)果集游標可以前后移動,結(jié)果集立即反映表中數(shù)據(jù)變化
resultSetConcurrency定義結(jié)果集的更新方式:
CONCUR_UPDATABLE,可以進行更新操作
CONCUR_READ_ONLY,不可以進行更新操作
示例:反向遍歷數(shù)據(jù)表
st=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=st.executeQuery(sql);
rs.afterLast;//將游標指向結(jié)果集結(jié)束
while(rs.previous())
{
System.out.println(rs.getString(1));//此處為第一列!也可以使用列名
}
Statement stmt=con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//ResultSet包含符合SQL語句中條件的所有行,等價于一張表,其中有查詢所返回的列標題及相應的值。通過get方法可以訪問這些行中的數(shù)據(jù)
//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; //初始化執(zhí)行語句對象
boolean list = false; //新建boolean變量為false;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加載連接數(shù)據(jù)庫存的驅(qū)動
} catch (ClassNotFoundException ex) { //捕獲異常
}
try {
con = DriverManager.getConnection("jdbc:odbc:dbName"); //用ODBC方法連接數(shù)據(jù)源,數(shù)據(jù)源名為dbName.
String sql = "insert into student values(?,?,?)"; //創(chuàng)建sql語句,語句意思為插入數(shù)據(jù).
pstmt = con.prepareStatement(sql); //執(zhí)行該語句.
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(); //關閉執(zhí)行語句
con.close(); //關閉連接語句
} catch (SQLException ex2) { //捕獲異常
}
}
return list; //返回它的值,如果為真,則這個方法插入數(shù)據(jù)成功了.
}
}
下面是理論
..........完全是代碼啊
第一步:在構(gòu)造函數(shù)里面使用Class.forName加載驅(qū)動
第二步:在構(gòu)造函數(shù)中使用DriverManager.getConnection(地址,用戶,密碼)得到鏈接。
第三步:得到預編譯對象PreparedStatement ps = conn.createPreparedStatement ();
第四步:得到結(jié)果集ResuletSet rs = ps.executeQuely(SQL語句)
或者是添加,修改,刪除 boolean b = ps.executeUpdata(SQL語句)
建議你開一下jdbc的書籍,你會明白為什么這么做的,理解了問題就簡單了,好多的事情IDE可以做,知道原理就可以了
首先要知道JAVA里面3個操作數(shù)據(jù)庫的接口
CONNECTION STATEMENT REAULTSET
然后用Class.forName加載驅(qū)動
用Drivermanager.getConnection();建立連接
然后用CONNECTION的對象 createStatement();
然后就可以用得到的Statement對象去執(zhí)行SQL語句了
本文題目:oracle如何反向遍歷的簡單介紹
本文鏈接:http://chinadenli.net/article40/dsdgjho.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設計公司、外貿(mào)網(wǎng)站建設、標簽優(yōu)化、網(wǎng)站設計公司、企業(yè)建站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)