亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? databaseoperation.java

?? Java2程序設計實用教程世界杯足球成績統計
?? JAVA
字號:
//【例11.2】  連接指定數據庫并獲得數據庫屬性信息。
//【例11.3】  執行數據操縱的SQL語句。
//  數據庫操作類

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import javax.swing.*;
import javax.swing.table.*;

public class DataBaseOperation
{
    private Connection connection;                         //數據庫連接對象 

        //構造方法,連接指定數據庫。4個參數分別指定JDBC驅動程序、數據庫URL、用戶名和口令
    public DataBaseOperation(String driver,String url, String user, String password)
        throws ClassNotFoundException,SQLException
    {
        this.connection = null;
        Class.forName(driver);                             //指定JDBC驅動程序
        this.connection = DriverManager.getConnection(url,user,password); //返回數據庫連接對象
    }

    public DataBaseOperation(String driver, String url) throws ClassNotFoundException,SQLException
    {
        this.connection = null;
        Class.forName(driver);
        this.connection = DriverManager.getConnection(url);
    }

    public void finalize() throws SQLException             //析構方法,關閉數據庫連接
    {
        this.connection.close();
    }

    public String getDBAbout() throws SQLException         //獲得所連接數據庫的屬性信息,返回字符串
    {
        String message = "";
        DatabaseMetaData dbmd = this.connection.getMetaData();
        message = "JDBC驅動程序:" + dbmd.getDriverName() +" "+ dbmd.getDriverVersion() + "\r\n" +
                  "JDBC URL:" + dbmd.getURL() + "\r\n" +
                  "數據庫:" + dbmd.getDatabaseProductName() + "\r\n" +
                  "數據庫版本:" + dbmd.getDatabaseProductVersion() + "\r\n"+
                  "用戶名:" + dbmd.getUserName() + "\r\n";
        return message;
    }

//【例11.3】  執行數據操縱的SQL語句。

        //執行數據更新的SQL語句,包括INSERT、UPDATE、DELETE語句
        //執行成功返回所影響的行數,否則返回0
    public int dataUpdate(String sql) throws SQLException
    {
        Statement statement = this.connection.createStatement(); 
        int result = statement.executeUpdate(sql);
        statement.close();
        return result;
    }

        //執行數據查詢的SELECT語句,參數table 指定表名,conditions 指定WHERE子句的查詢條件,多個條件時用邏輯運算符連接
        //執行成功返回數據結果集,否則返回null。
    public void select(String sql) throws SQLException
    {
        Statement statement = this.connection.createStatement();
        ResultSet resultset = statement.executeQuery(sql);           //執行數據查詢SELECT語句
        ResultSetMetaData rsmd = resultset.getMetaData();        //返回元數據對象
        int columnCount = rsmd.getColumnCount();                 //獲得列數
        for(int j=1;j<=columnCount;j++)
            System.out.print(rsmd.getColumnLabel(j)+"  ");       //獲得列名
        System.out.println();
            
        while(resultset.next())                                  //從前向后訪問每行
        {
            for(int j=1;j<=columnCount;j++)                      //獲得每列值
                System.out.print(resultset.getString(j)+"  ");   //獲得當前行指定列的值
            System.out.println();
        }
        resultset.close();
        statement.close();
    }
    
//實驗11 按省份分類瀏覽student數據庫中的stuinfo表。
//【例13.1】  輸入并分類瀏覽參賽隊信息。

        //執行數據查詢的SELECT語句,參數table 指定表名,conditions 指定WHERE子句的查詢條件,多個條件時用邏輯運算符連接
        //執行成功返回數據結果集,否則返回null。
    public String[] selectDistinct(String table, String column) throws SQLException
    {
        String[] results=null; 
        if(table!=null && table!="")
        {
            String sql = "SELECT DISTINCT "+column+" FROM "+table+" ORDER BY "+column;   //獲得指定列不重復的值

            Statement statement = this.connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                  ResultSet.CONCUR_READ_ONLY);       //設置結果集屬性為可滾動、只讀
            ResultSet resultset = statement.executeQuery(sql);       //執行數據查詢SELECT語句
            if (resultset!=null)
            {
                int rowCount=0;
                while(resultset.next())                              //獲得結果集總行數
                    rowCount++;
        
                results = new String[rowCount+1];                      //按列數分配一維數組空間
                results[0] = "全部";
                resultset.beforeFirst();                             //移動指針到第一行之前
                int i=1;
                while(resultset.next())                              //獲得每列數據
                {
                    results[i] = resultset.getString(1);             //獲得當前行指定列的值
                    i++;
                }
            }
            resultset.close();
            statement.close();
        }
        else
            throw new SQLException("表名不能為空。");

        return results;
    }


        //執行包含集函數的數據查詢SELECT語句
    public int selectCount(String sql) throws SQLException
    {
        Statement statement = this.connection.createStatement();
        ResultSet resultset = statement.executeQuery(sql);           //執行數據查詢SELECT語句
        resultset.next();
        int count = resultset.getInt(1);
        resultset.close();
        statement.close();
        return count;
    }


        //執行數據查詢的SELECT語句,參數table 指定表名,conditions 指定WHERE子句的查詢條件,多個條件時用邏輯運算符連接
        //執行成功返回數據結果集,否則返回null。
    public void select(String table, String conditions, String sort_column, DefaultTableModel tableModel) throws SQLException
    {
        if(table!=null && table!="")
        {
            String sql = "SELECT * FROM " + table;                   //查詢全部列時
            if(conditions!=null && conditions!="")
                sql +=" WHERE " + conditions;                        //增加查詢條件
            sql +=" ORDER BY "+ sort_column ;                        //按指定列的升序排序
//            sql +=" ORDER BY '#1'" ;                        //默認按第1列的升序排序,SQL Server不支持#1 
//            System.out.println(sql);

            Statement statement = this.connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                  ResultSet.CONCUR_UPDATABLE);       //設置結果集屬性為可滾動、只讀
            ResultSet resultset = statement.executeQuery(sql);       //執行數據查詢SELECT語句
            if (resultset!=null)
            {
                int rowCount=0;
                while(resultset.next())                              //獲得結果集總行數
                    rowCount++;
        
                ResultSetMetaData rsmd = resultset.getMetaData();    //返回元數據對象
                int columnCount = rsmd.getColumnCount();             //獲得列數

                tableModel.setRowCount(rowCount);
                tableModel.setColumnCount(columnCount);

                resultset.beforeFirst();                             //移動指針到第一行之前
                int i=0;
                while(resultset.next())                              //獲得每列數據
                {
                    for(int j=1;j<=columnCount;j++)
                        tableModel.setValueAt(resultset.getString(j), i, j-1);//獲得當前行指定列的值
                    i++;
                }
//                dataModel.fireTableChanged(null);
            }
            else
                tableModel.setRowCount(0);
            resultset.close();
            statement.close();
        }
        else
            throw new SQLException("表名不能為空。");
    }

}


/*
①  執行數據插入INSERT語句的方法
在DataBaseOperation類中添加下列insert()方法。insert()方法將參數指定的表、列及列值轉換成一條數據插入的INSERT語句,參數table指定表名,columns[]數組指定多個列,values[]數組指定多個列對應的取值,執行成功返回1,否則返回0。該方法聲明如下。


②  執行數據查詢SELECT語句的方法
在DataBaseOperation類中添加下列select()方法。select()方法將參數指定的表及條件轉換成一條數據查詢的SELECT語句,參數table指定表名,conditions指定WHERE子句的查詢條件,多個條件時用邏輯運算符連接。
由于調用executeQuery()方法執行SELECT語句返回一個結果集ResultSet對象,這個對象需要在保持數據庫連接的狀態才能訪問,而select()方法調用是不基于數據庫連接的,所以,select()方法不能簡單返回一個ResultSet對象,需要將ResultSet對象中的數據讀出并轉移到一個二維數組Object[][]中。該方法聲明如下。

其中,將ResultSet對象屬性設置為可滾動的,按從前向后的方向對結果集訪問了兩次,第一次循環獲得結果集的總行數,以確定二維數組的維數,再調用beforeFirst()方法使結果集指針回到第1行之前,準備再一次對結果集進行訪問。
*/

/*


        //執行數據查詢的SELECT語句,參數table 指定表名,conditions 指定WHERE子句的查詢條件,多個條件時用邏輯運算符連接
        //執行成功返回數據結果集,否則返回null。
    public Object[][] select(String table, String conditions) throws SQLException
    {
        Object[][] resultobj = null;
        if(table!=null && table!="")
        {
            String sql = "SELECT * FROM " + table;                   //查詢全部列時
            if(conditions!=null && conditions!="")
                sql +=" WHERE " + conditions;                        //增加查詢條件
            sql +=" ORDER BY '#1'" ;                                 //默認按第1列的升序排序

            System.out.println(sql);

            Statement statement = this.connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                  ResultSet.CONCUR_UPDATABLE);       //設置結果集屬性為可滾動、只讀
            ResultSet resultset = statement.executeQuery(sql);       //執行數據查詢SELECT語句
 
            if (resultset!=null)
            {
                int rowCount=0;
                while(resultset.next())                              //獲得結果集總行數
                    rowCount++;
        
                ResultSetMetaData rsmd = resultset.getMetaData();    //返回元數據對象
                int columnCount = rsmd.getColumnCount();             //獲得列數

                resultobj = new String[rowCount][columnCount];       //按行列數分配二維數組空間

                resultset.beforeFirst();                             //移動指針到第一行之前
                int i=0;
                while(resultset.next())                              //獲得每列數據
                {
                    for(int j=1;j<=columnCount;j++)
                        resultobj[i][j-1] = resultset.getString(j);  //獲得當前行指定列的值
                    i++;
                }
            }
            resultset.close();
        }
        else
            throw new SQLException("表名不能為空。");

        return resultobj;
    }

        //數據查詢,沒有條件,返回表中全部數據
    public Object[][] select(String table) throws SQLException
    {
        return select(table,"");
    }




        //執行INSERT語句插入一行數據,參數table指定表名,columns[]數組指定多個列,values[]數組指定多個列對應的取值
        //執行成功返回1,否則返回0
    public int insert(String table, String[] columns, Object[] values) throws SQLException
    {
        int result = 0;
        String sql = "INSERT INTO " + table + " ";         //轉換表名
        if (columns!=null)                                 //轉換多個列名
        {
            sql += " (" + columns[0];
            for(int i=1;i<columns.length;i++)
                sql += " , " + columns[i];
            sql += ")";
        }
        
        sql += " VALUES ('"+ values[0]+"'";                     //轉換多個列值
        for(int i=1;i<values.length;i++)
            sql += " , '" + values[i] +"'";
        sql += ")";

        System.out.println(sql);

        Statement statement = this.connection.createStatement(); 
        result = statement.executeUpdate(sql);             //執行數據插入INSERT語句
        statement.close();
        return result;
    }

        //數據插入,沒有指定列,values[]數組指定所有列的取值
    public int insert(String table, Object[] values) throws SQLException
    {
        return insert(table, null, values);
    }

*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精选在线视频| 久久久精品欧美丰满| 蜜桃视频免费观看一区| 久久久久国产精品厨房| 欧美三级中文字幕| 国产成人亚洲综合a∨婷婷| 一区二区三区鲁丝不卡| 久久久久久久性| 欧美日韩大陆在线| 国产成人啪免费观看软件 | 日本一区中文字幕 | 麻豆精品视频在线观看免费| 国产欧美日韩麻豆91| 日韩电影免费在线看| 99国产精品久久久| 久久久久久久网| 一区二区三区国产豹纹内裤在线| 国产一区二区福利| 日韩视频免费观看高清完整版在线观看| 欧美激情一区二区三区| 欧美私人免费视频| 国产精品免费观看视频| 色综合久久99| 精品国产青草久久久久福利| 国产精品色哟哟| 国产成+人+日韩+欧美+亚洲| 亚洲综合视频网| 99久久久久久| 精品99一区二区三区| 久久精品夜色噜噜亚洲a∨| 中文字幕精品综合| 毛片av一区二区| thepron国产精品| 欧美一三区三区四区免费在线看| 亚洲成人免费观看| 精品999在线播放| 欧美最猛性xxxxx直播| 久久99国产精品麻豆| 久久综合中文字幕| 99久久国产综合精品色伊| 亚洲精品一卡二卡| 精品日产卡一卡二卡麻豆| 91免费国产在线| 婷婷亚洲久悠悠色悠在线播放| 成人动漫一区二区在线| 精品午夜一区二区三区在线观看| 日本在线不卡一区| 偷拍一区二区三区四区| 成人午夜视频福利| 岛国av在线一区| 日韩中文字幕区一区有砖一区| 久久综合久久综合亚洲| 亚洲欧美国产77777| 国产精品一区二区不卡| 亚洲在线免费播放| 欧美激情资源网| 欧美日韩亚洲综合在线| 欧美日韩中文一区| 4438亚洲最大| 日韩一级片在线播放| 精品久久一区二区| 国产夜色精品一区二区av| 久久夜色精品国产噜噜av| 久久久久久久久伊人| 国产精品成人网| 亚洲一区二区欧美激情| 日韩不卡手机在线v区| 国产露脸91国语对白| 精东粉嫩av免费一区二区三区| 日韩国产欧美在线观看| 国产成人免费在线| 欧美亚一区二区| wwww国产精品欧美| 久久久久久久综合色一本| 久久伊人中文字幕| 亚洲视频在线观看三级| 国产精品久久久久久福利一牛影视 | 欧美变态tickling挠脚心| 欧美成人午夜电影| 国产精品欧美经典| 一区二区三区美女| 一区二区久久久久久| 日日噜噜夜夜狠狠视频欧美人 | 国产午夜精品久久久久久免费视 | 日本韩国欧美在线| 91精品久久久久久久91蜜桃| 久久蜜臀中文字幕| 亚洲精品精品亚洲| 午夜欧美2019年伦理| 国产传媒一区在线| 美腿丝袜在线亚洲一区| 精品亚洲成a人在线观看| 成人aa视频在线观看| 欧美日韩国产一级片| 亚洲美女精品一区| 国产美女娇喘av呻吟久久| 91色在线porny| 欧美唯美清纯偷拍| 1区2区3区国产精品| 国内精品视频一区二区三区八戒| 欧美中文字幕一区| 欧美日韩激情一区| 欧美视频一二三区| 日韩精品一区二区三区中文精品| 亚洲乱码国产乱码精品精小说| 久久精品国产秦先生| 91精品国产综合久久国产大片| 亚洲欧洲日韩一区二区三区| 国产精品自拍在线| 国产精品国产精品国产专区不蜜| 国产传媒一区在线| 国产精品色在线| 国产精品亚洲人在线观看| 国产成人亚洲精品青草天美| 欧美不卡激情三级在线观看| 久久不见久久见免费视频1| 日韩精品一区二区三区在线播放| 偷窥国产亚洲免费视频| 91麻豆精品国产91久久久资源速度| 一区二区三区日韩在线观看| av电影天堂一区二区在线| 久久国产精品第一页| 精品国产一区二区三区四区四| 国产剧情一区二区| 99精品国产91久久久久久| 日韩一区二区麻豆国产| 国产综合久久久久久久久久久久| 欧美激情综合网| 欧美午夜精品免费| 国产麻豆精品在线观看| 日韩一区二区中文字幕| 成人av电影在线播放| 99国产欧美另类久久久精品| 日韩福利电影在线观看| 国产精品一区免费在线观看| 欧美色综合网站| 韩国av一区二区三区四区| 中文天堂在线一区| 91亚洲国产成人精品一区二区三 | 亚洲va欧美va人人爽| 国产精品九色蝌蚪自拍| 国产精品久久一级| 久久综合国产精品| 久久免费美女视频| 久久综合九色综合欧美98| 久久亚洲一区二区三区明星换脸| 国产一区二区不卡在线| 日韩影院在线观看| 亚洲成在线观看| 蜜桃一区二区三区四区| 国产精品精品国产色婷婷| 亚洲综合色网站| 日日夜夜精品免费视频| 美女视频一区在线观看| 国产精品亚洲视频| 成人免费毛片app| 日本久久精品电影| 日韩片之四级片| 久久精品视频在线看| 日韩理论电影院| 国产精品影视网| 色成年激情久久综合| 日韩一区二区三区四区五区六区| 久久新电视剧免费观看| 亚洲视频一二三| 久久精品国产久精国产爱| 成人97人人超碰人人99| 欧美人与禽zozo性伦| 精品国产乱码久久久久久久久 | 日韩一区二区三区三四区视频在线观看| 91精品蜜臀在线一区尤物| 亚洲国产精品99久久久久久久久| 亚洲卡通动漫在线| 精彩视频一区二区| 欧美日韩午夜在线视频| 精品国产亚洲在线| 亚洲另类春色校园小说| 蜜臀av一级做a爰片久久| av中文一区二区三区| 国产精品污网站| 国产成人在线视频免费播放| 日韩欧美国产一区二区三区| 中文一区二区完整视频在线观看| 亚洲乱码国产乱码精品精98午夜 | 国产麻豆9l精品三级站| 69堂国产成人免费视频| 亚洲欧美日韩电影| 国产高清亚洲一区| 欧美电影免费观看高清完整版在线 | 奇米777欧美一区二区| www.欧美日韩| 国产精品午夜在线| 国产v综合v亚洲欧| 日韩视频一区二区三区在线播放| 亚洲一区二区高清| 91美女精品福利| 国产精品的网站| 成人av片在线观看| 久久久久久久久久久久久久久99 | 国产精品一区二区免费不卡|