008--JDBC連接數(shù)據(jù)庫Java實現(xiàn)

1、線程池進(jìn)行數(shù)據(jù)庫查詢-Java實現(xiàn)

調(diào)用方法

public static void main(String[] args)throws Exception {
    Pool.connectDateBase();
}

創(chuàng)建線程池

public static BasicDataSource createConnectionPool () throws Exception {
        BasicDataSource bds = new BasicDataSource(); //直接new連接池
        bds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
        String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
        bds.setUrl(url);//連哪里
        bds.setUsername("scott");//用戶名
        bds.setPassword("tiger");//密碼
        bds.setInitialSize(3);//啟動連接池后,初始的連接數(shù)
        bds.setMaxActive(100);//最大活動連接數(shù)
        bds.setMaxIdle(30);//最大空閑連接數(shù)
        bds.setMaxWait(10000);//最長等候時間甫恩,過時就連接失敗
        bds.setMinIdle(1);//最小連接數(shù)
        return bds;
    }

連接服務(wù)的方法

public static void connectDateBase()throws Exception {
       BasicDataSource bds = Pool.createConnectionPool();
       //連接池的屬性一般都是由項目經(jīng)理在配置文件中設(shè)置好
        Connection conn = bds.getConnection();
        Statement st = conn.createStatement();
        String sql = "select * from emp";
        ResultSet rs = st.executeQuery(sql);
        while(rs.next()){
            int id = rs.getInt("empno");
            String name = rs.getString(2);
            double sal = rs.getDouble("sal");
            System.out.println(id+","+name+","+sal);
        }
        rs.close();
        st.close();
        conn.close();
    }

2、存儲過程學(xué)習(xí)-Java實現(xiàn)

數(shù)據(jù)庫創(chuàng)建

drop table users;
create table users(
    u_id number(37) primary  key,
    uname varchar2(200) unique not null ,
    upass varchar2(200) not null
);
drop sequence user_squ;
create sequence user_squ;

存儲過程創(chuàng)建

drop procedure getMax;
create or replace procedure getMax
is 
begin
    insert into users values (user_squ.nextval,user_squ.nextval,'123||user_squ.currval');
    dbms_output.put_line('3123312');
end;

方法調(diào)用

public static void main(String[] args) throws Exception {
    //Login.commitSignal();
    //Login.commitSome();
    //Login.commitMyself();
    Login.commitProduce();      
}

JDBC插入SQL語句插入數(shù)據(jù)庫

"insert into student values (null,'"+name+"','"+value+"')"單括號里面先寫兩個"酌予,里面再寫兩個+磺箕,里面再寫變量名

PrepareStatement進(jìn)行setString的時候,只能是數(shù)字,不能像Statement的隨意拼接了

錯誤示例: preparedStatement.setString(1, "user_squ.nextval");

刪除存儲過程

drop procedure 名

清除表的數(shù)據(jù)

truncate table 名

創(chuàng)建鏈接服務(wù)的方法

public static Connection connectDateBase(Properties properties)throws Exception {
        FileInputStream inputStream = new FileInputStream("./src/db.properties");
        properties.load(inputStream);
        inputStream.close();
        String url = properties.getProperty("url");
        String username = properties.getProperty("username");
        String passwd = properties.getProperty("passwd");
        Connection conn = DriverManager.getConnection(url, username, passwd);
        return conn;
    }

單個數(shù)據(jù)提交

public static void commitSignal() throws Exception{
        Properties properties = new Properties();
        Connection connection = Login.connectDateBase(properties);
        String sql = "insert into users values (user_squ.nextval,?,'123||user_squ.currval')";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setString(1, "小青");
        preparedStatement.executeUpdate();
        preparedStatement.close();
        connection.close();
    }

多個數(shù)據(jù)提交

public static void commitSome() throws Exception{
        Properties properties = new Properties();
        Connection connection = Login.connectDateBase(properties);
        String sql = "insert into users values (user_squ.nextval,'123||user_squ.currval',?)";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        for (int i = 0; i < 10000; i++) {
            preparedStatement.setString(1, "小青");
            preparedStatement.addBatch();
            if (i%100==99)  preparedStatement.executeBatch();
        }
        preparedStatement.close();
        connection.close();
    }

設(shè)置手動提交

public static void commitMyself() throws Exception{
        Properties properties = new Properties();
        Connection connection = Login.connectDateBase(properties);
        connection.setAutoCommit(false);
        String sql = "insert into users values (user_squ.nextval,?,'123||user_squ.currval')";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setString(1, "小青");
        preparedStatement.executeUpdate();
        preparedStatement.close();
        connection.commit();
        connection.close();
    }

提交事務(wù)

public static void commitProduce() throws Exception{
        Properties properties = new Properties();
        Connection connection = Login.connectDateBase(properties);
        String sql = "call getMax()";
        CallableStatement callableStatement = connection.prepareCall(sql);
        for (int i = 0; i < 200; i++) {
            callableStatement.execute();
        }
        callableStatement.close();
        connection.close();
    }

3抛虫、properties使用-Java實現(xiàn)

基礎(chǔ)使用

properities 屬性設(shè)置

url=jdbc:oracle:thin:@127.0.0.1:1521:XE
username=scott
passwd=tiger

簡版JDBC連接數(shù)據(jù)庫松靡,使用DML

public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        //  先明確我們要干什么?
        //  1.數(shù)據(jù)庫管理
        //  2.數(shù)據(jù)庫連接
        //  3.建立執(zhí)行平臺
        //  4.執(zhí)行SQL語句
        //  5.平臺關(guān)閉
        
        //1.
        Class.forName("oracle.jdbc.driver.OracleDriver");

                //2.
        String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
        Connection conn = DriverManager.getConnection(url, "scott", "tiger");
                //3.
        Statement st = (Statement) conn.createStatement();
        String sql ="insert into dept values (88,'NetWork','BOSTON')";
                //4.
        st.executeUpdate(sql);
                //5.
        st.close();
        conn.close();

}

簡版JDBC連接數(shù)據(jù)庫建椰,使用Select

public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        //  先明確我們要干什么雕欺?
        //  1.數(shù)據(jù)庫管理
        //  2.數(shù)據(jù)庫連接
        //  3.建立執(zhí)行平臺
        //  4.執(zhí)行SQL語句
        //  5.平臺關(guān)閉

        //1.
        Class.forName("oracle.jdbc.driver.OracleDriver");
                //2.
        String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
        Connection conn = DriverManager.getConnection(url, "scott", "tiger");
                //3.
        Statement st = (Statement) conn.createStatement();
        String sql ="select * from dept";
        st.executeQuery(sql);
                //4.
        ResultSet resultSet = st.getResultSet();
        while (resultSet.next()) {
            String num = resultSet.getString(1);
            String work = resultSet.getString(2);
            String loc = resultSet.getString("loc");
            System.out.println(num+","+work+","+loc);
        }
        resultSet.close();      
        st.close();
        conn.close();

}

簡版JDBC連接數(shù)據(jù)庫,無沖突版使用Select

public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        //  先明確我們要干什么棉姐?
        //  1.數(shù)據(jù)庫管理
        //  2.數(shù)據(jù)庫連接
        //  3.建立執(zhí)行平臺
        //  4.執(zhí)行SQL語句
        //  5.平臺關(guān)閉


        //1.
        Class.forName("oracle.jdbc.driver.OracleDriver");
        //2.
        String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
        Connection conn = DriverManager.getConnection(url, "scott", "tiger");
        //3.
        Statement st = (Statement) conn.createStatement();
        String sql ="select * from emp";
        st.executeQuery(sql);
        //4.
        ResultSet resultSet = st.getResultSet();
        ResultSetMetaData date = resultSet.getMetaData();
        int count = date.getColumnCount();
        while (resultSet.next()) {
            for (int i = 1; i <= count; i++) {
                String string = date.getColumnName(i);
                String value = resultSet.getString(i);
                System.out.print(string+","+value+"  ");
            }
            System.out.println();
        }
        //5.
        resultSet.close();      
        st.close();
        conn.close();
    
}

簡版JDBC連接數(shù)據(jù)庫屠列,進(jìn)行項目分級,配置文件路徑(properties)

public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        //  先明確我們要干什么伞矩?
        //  1.找路徑
        //  2.取得屬性
        //  3.數(shù)據(jù)庫管理
        //  4.數(shù)據(jù)庫連接
        //  5.建立執(zhí)行平臺
        //  6.執(zhí)行SQL語句
        //  7.平臺關(guān)閉

        //1.
        File file =new File(".");
        System.out.print(file.getAbsolutePath());
        //2.
        Properties properties = new Properties();
        FileInputStream inputStream = new FileInputStream("./src/db.properties");
        properties.load(inputStream);
        inputStream.close();
        String url = properties.getProperty("url");
        String username = properties.getProperty("username");
        String passwd = properties.getProperty("passwd");
        //3.
        Connection conn = DriverManager.getConnection(url, username, passwd);
        //4.
        Statement st = (Statement) conn.createStatement();
        //5.
        String sql ="select * from emp";
        st.executeQuery(sql);
        //6.
        ResultSet resultSet = st.getResultSet();
        ResultSetMetaData date = resultSet.getMetaData();
        int count = date.getColumnCount();
        while (resultSet.next()) {
            for (int i = 1; i <= count; i++) {
                String string = date.getColumnName(i);
                String value = resultSet.getString(i);
                System.out.print(string+","+value+"  ");
            }
            System.out.println();
        }
        //7.
        resultSet.close();      
        st.close();
        conn.close();
    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笛洛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乃坤,更是在濱河造成了極大的恐慌撞蜂,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侥袜,死亡現(xiàn)場離奇詭異蝌诡,居然都是意外死亡,警方通過查閱死者的電腦和手機枫吧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門浦旱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人九杂,你說我怎么就攤上這事颁湖。” “怎么了例隆?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵甥捺,是天一觀的道長。 經(jīng)常有香客問我镀层,道長镰禾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮吴侦,結(jié)果婚禮上屋休,老公的妹妹穿的比我還像新娘。我一直安慰自己备韧,他們只是感情好劫樟,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著织堂,像睡著了一般叠艳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上易阳,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天附较,我揣著相機與錄音,去河邊找鬼闽烙。 笑死,一個胖子當(dāng)著我的面吹牛声搁,可吹牛的內(nèi)容都是我干的黑竞。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼疏旨,長吁一口氣:“原來是場噩夢啊……” “哼很魂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起檐涝,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤遏匆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谁榜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幅聘,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年窃植,在試婚紗的時候發(fā)現(xiàn)自己被綠了帝蒿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡巷怜,死狀恐怖葛超,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情延塑,我是刑警寧澤绣张,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站关带,受9級特大地震影響侥涵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一独令、第九天 我趴在偏房一處隱蔽的房頂上張望端朵。 院中可真熱鬧键耕,春花似錦娜搂、人聲如沸鹊奖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贤惯。三九已至老速,卻和暖如春啊研,著一層夾襖步出監(jiān)牢的瞬間裙戏,已是汗流浹背乘凸。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留累榜,地道東北人营勤。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像壹罚,于是被迫代替她去往敵國和親葛作。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理猖凛,服務(wù)發(fā)現(xiàn)赂蠢,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 從三月份找實習(xí)到現(xiàn)在辨泳,面了一些公司虱岂,掛了不少,但最終還是拿到小米菠红、百度第岖、阿里、京東试溯、新浪绍傲、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,184評論 11 349
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,499評論 25 707
  • "跟妳認(rèn)識四年多了吧耍共?烫饼!我們好像沒這樣一起散步小走一段過哦!"我手插著口袋试读。 春天晚風(fēng)還是帶點涼意杠纵。 ...
    馬可約伯閱讀 297評論 0 1
  • echartshighcharts 前臺后臺配合前端展示方式 技巧 注意事項后臺數(shù)據(jù)存儲方式(層級、詳情) 技巧 ...
    遇見番茄大人閱讀 189評論 0 0