Java訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)實(shí)例詳解
JAVA程序想要訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),需要進(jìn)行如下準(zhǔn)備:
1.安裝一個(gè)數(shù)據(jù)庫(kù)(這里使用mysql免安裝版)
2.下載該數(shù)據(jù)庫(kù)的驅(qū)動(dòng)包(這里使用mysql官方提供的mysql-connector-java-5.1.39-bin)
PS:我的這個(gè)免安裝的MySQL不知道為什么存儲(chǔ)的中文都是亂碼,參考了別人的解決方案修改了my-default.ini文件也不行,如果各位看到這篇文章的大佬有解決辦法,還請(qǐng)不吝賜教,感謝!
一、啟動(dòng)數(shù)據(jù)庫(kù)
將mysql免安裝壓縮包解壓到某目錄下
雙擊 mysql-5.6.24-win32 => bin => mysqld.exe 啟動(dòng)數(shù)據(jù)庫(kù)
正常情況下會(huì)閃過(guò)一個(gè)黑框
打開(kāi)DOS窗口,進(jìn)入mysql文件夾所在盤(pán)(我的是D盤(pán))
依次輸入如下命令:
cd mysql* => cd bin =>mysql -uroot
(出現(xiàn)如下圖提示說(shuō)明已經(jīng)進(jìn)入數(shù)據(jù)庫(kù),可以開(kāi)始使用數(shù)據(jù)庫(kù)了)
二、創(chuàng)建數(shù)據(jù)庫(kù)
你可以直接在DOS窗口輸入sql語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù);
也可以將你的所有操作保存到一個(gè)sql文件,再在DOS窗口導(dǎo)入這個(gè)文件。(由于創(chuàng)建數(shù)據(jù)庫(kù)的命令較多,這里采用第二種方法)
創(chuàng)建db.sql文件(我保存到了D盤(pán))
create database if not exists stu; use stu; drop table if exists classes; create table classes( id int(10) primary key auto_increment, num varchar(12) not null , name varchar(45) not null, teacher varchar(15) not null, unique(name), unique(num) ); insert into classes(num,name,teacher ) values('20170101','Mike','Tom'); insert into classes(num,name,teacher ) values('20170102','Nancy','Tom'); insert into classes(num,name,teacher ) values('20170103','Frank','Tom');
然后在DOS窗口輸入:source d:/db.sql;
(出現(xiàn)如下圖提示說(shuō)明導(dǎo)入成功)
查看數(shù)據(jù)庫(kù)里的數(shù)據(jù)
三、JAVA程序?qū)雑ar包
eclipse里創(chuàng)建項(xiàng)目jdbc
將下載好的jar包復(fù)制到該項(xiàng)目下
右擊jar包 => Build Path => Add To Build Path
四、連接數(shù)據(jù)庫(kù)
創(chuàng)建DBCon文件,獲取數(shù)據(jù)庫(kù)連接對(duì)象
package db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBCon { ?? ?public Connection con=null; ? ?//創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象 ?? ?String url="jdbc:mysql://localhost:3306/stu"; ? //指定所要連接的數(shù)據(jù)庫(kù)的URL ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? ? ?//3306表示要連接的是本地?cái)?shù)據(jù)庫(kù);stu為要連接的具體數(shù)據(jù)庫(kù)名稱(chēng) ?? ?String user="root"; ? ? ? //用戶(hù)名 ? ? String password=""; ? ? ? //密碼 ? ? public Connection getConnection() { ? ? ?? ?try { ?? ??? ??? ?Class.forName("com.mysql.jdbc.Driver"); ? ?//加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)器 ?? ??? ??? ? ?? ??? ?} catch (ClassNotFoundException e) { ?? ??? ??? ?// TODO Auto-generated catch block ?? ??? ??? ?e.printStackTrace(); ?? ??? ?} ? ? ?? ?try { ?? ??? ??? ?con=(Connection)DriverManager.getConnection(url, user, password); ?? ??? ?} catch (SQLException e) { ?? ??? ??? ?// TODO Auto-generated catch block ?? ??? ??? ?e.printStackTrace(); ?? ??? ?} ?? ??? ?return con; ? ? } }
五、測(cè)試
創(chuàng)建Classes類(lèi)文件,保存和訪(fǎng)問(wèn)學(xué)生數(shù)據(jù)
public class Classes { ?? ?private String num; ?? ?private String name; ?? ?private String teacher; ?? ?public Classes() { ?? ??? ?super(); ?? ??? ?// TODO Auto-generated constructor stub ?? ?} ?? ?public Classes(String num, String name, String teacher) { ?? ??? ?super(); ?? ??? ?this.num = num; ?? ??? ?this.name = name; ?? ??? ?this.teacher = teacher; ?? ?} ?? ?public String getNum() { ?? ??? ?return num; ?? ?} ?? ?public void setNum(String num) { ?? ??? ?this.num = num; ?? ?} ?? ?public String getName() { ?? ??? ?return name; ?? ?} ?? ?public void setName(String name) { ?? ??? ?this.name = name; ?? ?} ?? ?public String getTeacher() { ?? ??? ?return teacher; ?? ?} ?? ?public void setTeacher(String teacher) { ?? ??? ?this.teacher = teacher; ?? ?} ?? ? }
創(chuàng)建測(cè)試類(lèi)Test
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import db.DBCon; public class Test { ?? ? ?? ?public static void main(String[] args) { ?? ??? ?// TODO Auto-generated method stub ?? ??? ?Connection cn; ?? ??? ?PreparedStatement psm=null;?? ?//PrepareStatement接口用來(lái)執(zhí)行動(dòng)態(tài)的sql語(yǔ)句 ?? ??? ?ResultSet rs;?? ?//ResultSet接口用來(lái)暫存數(shù)據(jù)庫(kù)查詢(xún)出的結(jié)果集 ?? ??? ?DBCon dbcon=new DBCon(); ?? ??? ?cn=dbcon.getConnection();?? ?//獲取數(shù)據(jù)庫(kù)對(duì)象 ?? ??? ?Classes classes=new Classes(); ?? ??? ?String sql="select * from classes"; ?? ??? ?try { ?? ??? ??? ?psm=cn.prepareStatement(sql);?? ?//實(shí)例執(zhí)行sql語(yǔ)句 ?? ??? ??? ?rs=psm.executeQuery();?? ?//將結(jié)果賦給rs指針 ?? ??? ??? ?if(rs.next()) {?? ??? ??? ?//判斷是否查詢(xún)到結(jié)果 ?? ??? ??? ??? ?rs.absolute(0);?? ??? ?//將rs指針置于結(jié)果集最上方 ?? ??? ??? ??? ?while(rs.next()) { ?? ??? ??? ??? ??? ?String classNum=rs.getString(2); ?? ??? ??? ??? ??? ?String className=rs.getString(3); ?? ??? ??? ??? ??? ?String classTeacher=rs.getString(4); ?? ??? ??? ??? ??? ?classes.setNum(classNum); ?? ??? ??? ??? ??? ?classes.setName(className); ?? ??? ??? ??? ??? ?classes.setTeacher(classTeacher); ?? ??? ??? ??? ??? ?System.out.println(classes.getNum()+","+classes.getName()+","+classes.getTeacher()); ?? ??? ??? ??? ?} ?? ??? ??? ??? ? ?? ??? ??? ?} ?? ??? ?} catch (SQLException e) { ?? ??? ??? ?// TODO Auto-generated catch block ?? ??? ??? ?e.printStackTrace(); ?? ??? ?} ?? ??? ? ?? ?} }
運(yùn)行Test文件,出現(xiàn)所查詢(xún)內(nèi)容
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot Application的exclude不生效問(wèn)題及排查
這篇文章主要介紹了SpringBoot Application的exclude不生效問(wèn)題及排查,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11MyBatis-Plus中如何實(shí)現(xiàn)動(dòng)態(tài)表名
這篇文章主要介紹了MyBatis-Plus中如何實(shí)現(xiàn)動(dòng)態(tài)表名問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07springboot調(diào)用HTML文件注意事項(xiàng)及說(shuō)明
這篇文章主要介紹了springboot調(diào)用HTML文件注意事項(xiàng)及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11SpringCloudGateway網(wǎng)關(guān)處攔截并修改請(qǐng)求的操作方法
這篇文章主要介紹了SpringCloudGateway網(wǎng)關(guān)處攔截并修改請(qǐng)求的操作方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-12-12簡(jiǎn)單說(shuō)說(shuō)Java SE、Java EE、Java ME三者之間的區(qū)別
本篇文章小編就為大家簡(jiǎn)單說(shuō)說(shuō)Java SE、Java EE、Java ME三者之間的區(qū)別。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-10-10java編程隊(duì)列數(shù)據(jù)結(jié)構(gòu)代碼示例
這篇文章主要介紹了java編程隊(duì)列數(shù)據(jù)結(jié)構(gòu)代碼示例,簡(jiǎn)單介紹了隊(duì)列的相關(guān)基礎(chǔ)知識(shí),然后通過(guò)實(shí)例向大家展示其實(shí)現(xiàn)方法,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11ThreadLocal原理介紹及應(yīng)用場(chǎng)景
本文詳細(xì)講解了ThreadLocal原理介紹及應(yīng)用場(chǎng)景,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12