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

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

?? databaseoperation.java

?? 足球賽成績統計,用到了SQL數據庫,適合有基礎的程序員,.
?? 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一区二区三区免费野_久草精品视频
久久精品噜噜噜成人av农村| 精品系列免费在线观看| 国产精品污www在线观看| 日韩精品一区二区三区三区免费| 欧美日韩不卡在线| 91麻豆精品国产自产在线观看一区| 欧美亚洲高清一区二区三区不卡| 色婷婷综合久久久| 欧美日韩一区成人| 精品国产在天天线2019| 精品乱人伦小说| 国产精品视频你懂的| 国产精品福利一区二区三区| 中文字幕第一区二区| 亚洲欧美一区二区视频| 亚洲激情在线播放| 日本不卡视频在线| 国产乱对白刺激视频不卡| 国产凹凸在线观看一区二区| 99九九99九九九视频精品| 欧美日韩一卡二卡| 精品奇米国产一区二区三区| 亚洲国产精华液网站w| 亚洲黄色小说网站| 免费成人av资源网| 不卡的电视剧免费网站有什么| 色一情一乱一乱一91av| 日韩午夜电影在线观看| 欧美—级在线免费片| 亚洲国产美国国产综合一区二区| 奇米精品一区二区三区在线观看| 国产成人在线视频网址| 欧美三级中文字幕在线观看| 欧美大尺度电影在线| 亚洲欧洲色图综合| 麻豆91精品91久久久的内涵| av网站免费线看精品| 欧美精品粉嫩高潮一区二区| 国产精品素人一区二区| 日日夜夜免费精品| 99国产精品久久久久| 久久亚洲综合色一区二区三区| 国产精品传媒入口麻豆| 日韩国产精品久久久| 99精品久久99久久久久| 精品裸体舞一区二区三区| 久久久夜色精品亚洲| 在线视频一区二区三区| 亚洲国产精品二十页| 亚洲精品欧美专区| 久久精品久久99精品久久| 99精品一区二区三区| 亚洲精品一区二区三区四区高清 | 91亚洲国产成人精品一区二区三| 7777精品久久久大香线蕉| 亚洲欧美一区二区三区国产精品| 激情久久久久久久久久久久久久久久| 欧美在线视频你懂得| 国产精品久久久久久久裸模| 国产一区二区三区av电影| 欧美一级片免费看| 日本欧美一区二区| 欧美性大战久久久久久久| 亚洲欧美韩国综合色| 成人h版在线观看| 成人三级伦理片| 欧美极品少妇xxxxⅹ高跟鞋| 久久9热精品视频| 欧美一卡二卡三卡| 首页欧美精品中文字幕| 欧美亚洲禁片免费| 亚洲国产精品精华液网站| 91成人免费电影| 亚洲欧美另类在线| 色综合久久久网| 亚洲欧美偷拍另类a∨色屁股| 北条麻妃国产九九精品视频| 国产精品全国免费观看高清| 国产馆精品极品| 国产精品美女久久福利网站| 成人激情图片网| 中文字幕在线不卡一区| 99综合影院在线| 亚洲女同ⅹxx女同tv| 欧美亚洲国产一卡| 青青草成人在线观看| 日韩美一区二区三区| 国产一区二区在线观看视频| 国产亚洲成aⅴ人片在线观看| 丁香桃色午夜亚洲一区二区三区| 国产欧美视频在线观看| 91视频国产观看| 日本伊人色综合网| 亚洲精品一区二区在线观看| 成人午夜电影久久影院| 亚洲欧美一区二区三区国产精品| 欧美日韩三级在线| 国产一区二区在线观看免费| 亚洲欧美在线观看| 欧美精品在线观看播放| 韩国理伦片一区二区三区在线播放| 久久综合国产精品| 色婷婷亚洲一区二区三区| 日韩av一区二区在线影视| 欧美国产亚洲另类动漫| 欧美日韩精品一二三区| 国产在线播放一区三区四| 亚洲欧洲中文日韩久久av乱码| 欧美日韩国产三级| 国产精品一级片| 亚洲国产日韩av| 国产亚洲成av人在线观看导航 | 亚洲精品乱码久久久久久日本蜜臀| 欧美日韩一级视频| 成人午夜私人影院| 日本成人在线不卡视频| 亚洲欧洲av一区二区三区久久| 91精品午夜视频| 93久久精品日日躁夜夜躁欧美| 日韩国产精品久久久久久亚洲| 国产精品美女视频| 欧美成人官网二区| 欧美日韩美少妇| av不卡一区二区三区| 国产一区二区在线观看免费| 日韩在线播放一区二区| 亚洲视频图片小说| 欧美国产日韩a欧美在线观看| 欧美精品99久久久**| 91论坛在线播放| 国产成人在线免费观看| 麻豆中文一区二区| 香蕉成人伊视频在线观看| 亚洲丝袜自拍清纯另类| 国产日韩影视精品| 久久色成人在线| 日韩精品最新网址| 91精品国产全国免费观看| 欧美在线观看一二区| 一本大道久久a久久综合婷婷| 国产成人一区二区精品非洲| 日韩成人伦理电影在线观看| 亚洲v日本v欧美v久久精品| 一区二区三区四区不卡在线| 国产精品国产自产拍高清av| 国产亚洲欧美色| 久久精品网站免费观看| 久久九九影视网| 国产亚洲制服色| 久久奇米777| 国产日产欧美精品一区二区三区| 欧美成人aa大片| 2023国产精品| 国产精品美日韩| 亚洲欧美怡红院| 亚洲一区二区五区| 亚洲自拍与偷拍| 三级欧美韩日大片在线看| 日韩极品在线观看| 免费人成黄页网站在线一区二区 | 一区在线播放视频| 中国av一区二区三区| 国产亚洲一区二区三区在线观看| 欧美精品一区二区三区一线天视频| 欧美成人激情免费网| 精品久久国产老人久久综合| 久久久久久久久99精品| 中文欧美字幕免费| 一区二区欧美视频| 舔着乳尖日韩一区| 久久99久久99小草精品免视看| 久国产精品韩国三级视频| 成人少妇影院yyyy| 在线国产电影不卡| 日韩精品中文字幕在线一区| 国产无遮挡一区二区三区毛片日本| 国产精品污污网站在线观看| 一区二区三区在线视频观看58| 亚洲3atv精品一区二区三区| 韩国一区二区在线观看| 福利一区福利二区| 欧美日韩一卡二卡三卡 | 欧美日韩视频专区在线播放| 日韩欧美一级二级三级| 中文字幕亚洲区| 免费高清在线一区| av电影天堂一区二区在线| 欧美日本韩国一区| 国产欧美日韩在线观看| 五月综合激情网| 国产一区不卡在线| 欧洲一区二区三区在线| 久久精品亚洲乱码伦伦中文| 亚洲777理论| 色综合网色综合| 日韩免费看网站| 中文字幕第一区| 奇米精品一区二区三区四区| 91亚洲国产成人精品一区二三| 日韩三级av在线播放|