java jdbc連接 代碼塊_java 中JDBC連接數據庫代碼和步驟詳解及實例代碼

?創建一個以JDBC連接數據庫的程序,包含7個步驟:

1、加載JDBC驅動程序:

在連接數據庫之前,首先要加載想要連接的數據庫的驅動到JVM(Java虛擬機),這通過java.lang.Class類的靜態方法forName(String? className)實現。 ? 例如:

try{

//加載MySql的驅動類

Class.forName("com.mysql.jdbc.Driver") ;

}catch(ClassNotFoundException e){

System.out.println("找不到驅動程序類 ,加載驅動失敗!");

e.printStackTrace() ;

}

成功加載后,會將Driver類的實例注冊到DriverManager類中。

2、提供JDBC連接的URL

?連接URL定義了連接數據庫時的協議、子協議、數據源標識。????? ?書寫形式:協議:子協議:數據源標識

協議:在JDBC中總是以jdbc開始

子協議:是橋連接的驅動程序或是數據庫管理系統名稱。

數據源標識:標記找到數據庫來源的地址與連接端口。

例如:(MySql的連接URL)jdbc:mysql:

//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;

useUnicode=true:表示使用Unicode字符集。如果characterEncoding設置為

gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字符編碼方式。

3、創建數據庫的連接

?要連接數據庫,需要向java.sql.DriverManager請求并獲得Connection對象,該對象就代表一個數據庫的連接。????? ?使用DriverManager的getConnectin(String url , String username ,??? String password )方法傳入指定的欲連接的數據庫的路徑、數據庫的用戶名和密碼來獲得。

例如://連接MySql數據庫,用戶名和密碼都是root

String url = "jdbc:mysql://localhost:3306/test" ;

String username = "root" ;

String password = "root" ;

try{

Connection con =

DriverManager.getConnection(url , username , password ) ;

}catch(SQLException se){

System.out.println("數據庫連接失敗!");

se.printStackTrace() ;

}

4、創建一個Statement

?要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3? 種類型:

1、執行靜態SQL語句。通常通過Statement實例實現。??????? 2、執行動態SQL語句。通常通過PreparedStatement實例實現。??????? 3、執行數據庫存儲過程。通常通過CallableStatement實例實現。

具體的實現方式:Statement stmt = con.createStatement() ;

PreparedStatement pstmt = con.prepareStatement(sql) ;

CallableStatement cstmt =

con.prepareCall("{CALL demoSp(? , ?)}") ;

5、執行SQL語句

Statement接口提供了三種執行SQL語句的方法:executeQuery 、executeUpdate?和execute

1、ResultSet executeQuery(String sqlString):執行查詢數據庫的SQL語句????????? ,返回一個結果集(ResultSet)對象。?????? 2、int executeUpdate(String sqlString):用于執行INSERT、UPDATE或????????? DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等?????? 3、execute(sqlString):用于執行返回多個結果集、多個更新計數或二者組合的?? 語句。

具體實現的代碼:ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;

int rows = stmt.executeUpdate("INSERT INTO ...") ;

boolean flag = stmt.execute(String sql) ;

6、處理結果

兩種情況:

1、執行更新返回的是本次操作影響到的記錄數。?????? 2、執行查詢返回的結果是一個ResultSet對象。

? ResultSet包含符合SQL語句中條件的所有行,并且它通過一套get方法提供了對這些 行中數據的訪問。????? ? 使用結果集(ResultSet)對象的訪問方法獲取數據:while(rs.next()){

String name = rs.getString("name") ;

String pass = rs.getString(1) ; // 此方法比較高效

}

(列是從左到右編號的,并且從列1開始)

7、關閉JDBC對象

操作完成以后要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲??明順序相反:

1、關閉記錄集?????? 2、關閉聲明?????? 3、關閉連接對象if(rs != null){ // 關閉記錄集

try{

rs.close() ;

}catch(SQLException e){

e.printStackTrace() ;

}

}

if(stmt != null){ // 關閉聲明

try{

stmt.close() ;

}catch(SQLException e){

e.printStackTrace() ;

}

}

if(conn != null){ // 關閉連接對象

try{

conn.close() ;

}catch(SQLException e){

e.printStackTrace() ;

}

}

下面是一個java連接Mysql數據庫的代碼塊package package1;import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;public class Test {??? public static void main(String[] args) {

//聲明Connection對象

Connection con;

//驅動程序名

String driver = "com.mysql.jdbc.Driver";

//URL指向要訪問的數據庫名mydata

String url2="jdbc:mysql://localhost:3306/studentin?useUnicode=true&characterEncoding=utf-8&useSSL=false";

//MySQL配置時的用戶名

String user = "root";

//MySQL配置時的密碼

String password = "12305";

//遍歷查詢結果集

try {

//加載驅動程序

Class.forName(driver);

//1.getConnection()方法,連接MySQL數據庫!!

con = DriverManager.getConnection(url2,user,password);

if(!con.isClosed())

System.out.println("Succeeded connecting to the Database!");

//2.創建statement類對象,用來執行SQL語句!!

Statement statement = con.createStatement();

//要執行的SQL語句

String sql = "select name,age from student";

//3.ResultSet類,用來存放獲取的結果集!!

ResultSet rs = statement.executeQuery(sql);

System.out.println("-----------------");

System.out.println("執行結果如下所示:");

System.out.println("-----------------");

System.out.println("name" + "\t" + "age");

System.out.println("-----------------");

String name = null;

int age;

while(rs.next()){

//獲取stuname這列數據

name = rs.getString("name");

//獲取stuid這列數據

//age = rs.getString("age");

age = rs.getInt("age");

//輸出結果

System.out.println(name + "\t" +age);

}

rs.close();

con.close();

} catch(ClassNotFoundException e) {

//數據庫驅動類異常處理

System.out.println("Sorry,can`t find the Driver!");

e.printStackTrace();

} catch(SQLException e) {

//數據庫連接失敗異常處理

e.printStackTrace();

}catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}finally{

System.out.println("數據庫數據成功獲取!!");

}

}}我的數據庫名稱為studentin,表名為student,下圖分別是表和程序結果的截圖

a01d2e05aee26aa387cf8a76a912de2c.png

3dfc452c68feda07db76692232560390.png

參考:http://www.aspku.com/kaifa/java/236248.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529198.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529198.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529198.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java不是true值不變_Java語言中String a=a;String b=a; 為什么 a==b 值為 true?

目前排名比較靠前的答案都回答得很淺顯易懂了。我這里給你一個最可靠的理論依據(雖然比較晦澀)。Java語言規范(JavaSE 1.8版本)章節3.10.5中對此作了規范,因此所有的Java語言編譯、運行時環境實現都必須依據此規范來實現。里面有這么一句話Moreover, a string liter…

計算H時M分S秒以后是_關于工程量計算-深圳工程量計算培訓

一、梯形體積計算公式?第一種:梯形的體積(上底下底)高2總長度第二種:把四棱臺延長成椎上截面面積為s,下截面r,臺高為h,那么體積1/3(r-s)*h.若是正梯形物體則為V〔S1+S2+開根號(S1*S2…

java數據庫edit_Java數據庫連接——JDBC基礎知識(操作數據庫:增刪改查)

一、JDBC簡介JDBC是連接java應用程序和數據庫之間的橋梁。什么是JDBC?Java語言訪問數據庫的一種規范,是一套API。JDBC (Java Database Connectivity) API,即Java數據庫編程接口,是一組標準的Java語言中的接口和類,使用這些接口和類&#xff…

java ssm 系統的搭建_SSM框架下的javaweb學生管理系統--搭建系統結構

業務需求:一個登錄頁面,一個學生展示頁面,添加、修改、刪除三個功能目的是給大家了解一個初級系統的構造,不寫那么復雜的需求了。從第一步開始:創建項目打開eclipse,點擊右上角的File-->New-->Dynami…

opencv 高通濾波和低通濾波_濾波電路合集(低通濾波,CLCП濾波,DLC濾波,CRC П濾波)...

常見低通濾波電路L 一階濾波C 一階濾波CL 二階濾波RC 二階濾波LC 二階濾波RCR T型三階濾波LCL T型三階濾波CRC π三階濾波CLC π三階濾波開關電源 單級低通濾波回路DLC 型二階濾波器開關電源 雙級串聯式低通濾波回路CLC П型濾波器1、工作原理介紹a.輸入正脈沖時,先給C1充電,充…

matlab語音信號處理實驗_現代通信綜合實驗系統平臺

現代通信綜合實驗系統平臺近30年來,隨著我國電信行業的迅猛發展,該行業的發展水平已成為衡量一個國家實力的一大關鍵因子。行業的發展同時,為當代相關專業大學生創造了極大的就業市場,市場對通信類人才有著極大的需求。培養一代全面型通信類人…

java 異常拋出空指針異常_java.lang.NullPointerException 拋出空指針異常

練習cookie做一個瀏覽商品記錄顯示,第一次會顯示瀏覽過的商品,然后在瀏覽第二次就出現空指針異常2016-6-16 16:51:48 org.apache.catalina.core.StandardWrapperValve invoke嚴重: Servlet.service() for servlet [CookieDemo2] in context with path [/…

iphone儲存空間系統怎么清理_教你快速清理 iPhone 系統緩存垃圾,拒絕卡頓!

「 改變能改變的一切,接受不能改變的一切!」▼“iPhone存儲空間”里的系統為何占用了幾十G的甚至上百G的內存,如何清理?當我們使用 iPhone 一段時間之后,系統或應用中會出現一些多余的緩存數據,如果長時間不…

倒N字形排列java_Java排序8大算法實現

概述排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。我們這里說說八大排序就是內部排序。當n較大,則應采用時間復…

cross_val_score 如何對孤立森林_【收藏】森林防火手抄報素材匯總!

森林防火手抄報模板參考【文字素材參考】01森林防火根據森林火災燃燒中央地點,蔓延速度,受害部位和程度,大致可把森林火災分為三大類:一.地表火 二.樹冠火 三.地下火。以受害森林面積大小為標準,森林火災分為以下四類:1.森林火警:…

java io 轉換流_Java編程IO流中的轉換流

對于IO流中的轉換流,顧名思義,就是將字符流轉換成字節流或者是將字節流轉換成字符流的對象。那么有時候我們得到的是一個字符流,但是我們又需要進行一些計算之類的,或者我們得到的是一個字節流,但是我們又需要進行一些…

pb9 調用系統語音_成都電銷系統一個月多少錢_選擇靈狐傳媒_收費透明

靈狐傳媒表示:成都電銷系統一個月多少錢_選擇靈狐傳媒_收費透明,在成都想要找一家專業的電銷系統,今天小編帶您看看該怎么選擇吧,和研發實踐,融合互聯網、云計算及人工智能、通信、大數據等技術,研發推出了以人工智能為…

java thread 線程銷毀_手把手帶你了解Java線程的實現方式及生命周期原理

前言我們在工作中線程技術很多情況下都能用的到,而且我們在面試的時候,線程技術基本上也是必問的。今天我來從線程的實現方式以及線程的生命周期做一個全面的講解與分析,幫助大家能更好的去了解線程技術。概念我們先來了解下線程和進程的概念…

python自動化_python自動化測試-Behave框架的用法介紹 - python測試學習

測碼學院 Behave框架的用法介紹眾所周知:行為驅動開發((behavior-drivendevelopment,BDD)是一種基于敏捷軟件開發的方法。它可以鼓勵開發人員,業務參與者和QA人員之間的協作。作為另一個Python自動化測試框架,“Behave”允許團隊…

虛擬按鍵自己觸發的java代碼_在SystemUI添加虛擬按鍵

我們想要在volume、back、menu同一排添加一個虛擬按鍵,并且觸發一個應用;1、首先我們要找到這些虛擬按鍵的位置:\frameworks\base\packages\SystemUI\res\layout-sw600dp\navigation_bar.xml2、橫屏時,最左邊的RelativeLayout 中添…

diskgeniusv4.4.0_入門TensorFlow2.0

今天老師帶領我們入門TensorFlow2.0。至于tensorflow2.0是啥嘛,詳細的可以度娘一下。我簡述一下,就是一個end-to-end machine-Learning open source plantform(端對端的開源機器學習的平臺)。學習tensorflow需要引入tensor這個概念,tensor的漢語意思就是…

java.close用法_void close()

void close()描述 (Description)java.io.FilterInputStream.close()方法關閉此輸入流并釋放與該流關聯的所有系統資源。聲明 (Declaration)以下是public void close()方法的聲明 -public void close()參數 (Parameters)NA返回值 (Return Value)該方法不返回任何值。異常 (Excep…

php 其他頁面獲取session_PHP五十個提升執行效率的小技巧,和常見問題

在項目開發過程中,經常遇到了一些PHP處理程序性能底下的情況,程序運行在centosnginx環境,雖然這個有很多的原因如:服務器本身配置,運行環境nginx服務,php-fpm配置等等,更多有一點仍然是PHPer沒有…

java怎么設置404界面_如何使用Spring MVC顯示自定義的404 Not Found頁面

本篇文章給大家帶來的內容是關于如何使用Spring MVC顯示自定義的404 Not Found頁面,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。不知道大家對千篇一律的404 Not Found的錯誤頁面是否感到膩歪了?其實通過很簡單…

藍牙解碼格式哪個最好_拆解報告:山靈UP2 藍牙音頻接收器

主流手機逐步取消3.5mm接口,不再內置解碼芯片,習慣使用有線耳機、對音質有一定要求的朋友只能選擇音頻轉換線或者藍牙耳機功率放大器這類產品替代。與轉換線相比,藍牙耳機功率放大器采用藍牙無線連接更加自由,體積一般也比較小巧。…