java jdbc連接和使用詳細(xì)介紹
java jdbc連接和使用
jdbc
導(dǎo)入驅(qū)動(dòng)
//jar是已經(jīng)打包好的class文件集,可以引用到其他工程中
//Build Path中add external jars導(dǎo)入
連接JDBC
1. 加載驅(qū)動(dòng)
Class.from("com.mysql.jdbc.Driver");
創(chuàng)建連接
//導(dǎo)包使用 java.sql.*; String jdbc="jdbc:mysql://localhost:3306/student?user=root&password=&characterEncoding=utf-8";//student是表名 Connection conn = DriverManager.getConnection(jdbc);
2. 注意 數(shù)據(jù)庫(kù)打開(kāi)之后一定要記得關(guān)。
conn.close();
1. 執(zhí)行SQL語(yǔ)句 (創(chuàng)建表,插入,刪除,更新)
使用Statemant
Statemant st = conn.createStatemant(); int row = st.executeUpdate(sql語(yǔ)句);//不能做查詢操作。
使用PrepareStatement
可以使用?占位符來(lái)代替你需要傳遞的參數(shù)
String sql = "insert into " + TABLENAME + "(name,subject,score) values(?,?,?)"; PrepareStatement pt = conn.prepareStatement(sql); //給每一位占位符設(shè)置值,下標(biāo)從1開(kāi)始 pt.setString(1,score.getName()); pt.setString(2.score.getSubject()); pt.setDouble(3,score.getScore()); //使用無(wú)參的方法 pt.executeUpdate();
1.查詢操作
static List<Score> queryScore(Connection pconn, Score pScore)
throws SQLException {
ArrayList<Score> mlist = new ArrayList<>();
String sql = "select * from " + TABLENAME + " where name = ?";
PreparedStatement ps = pconn.prepareStatement(sql);
ps.setString(1, pScore.getName());
ResultSet rs = ps.executeQuery();
while (rs.next()) {
// 這里可以通過(guò)rs獲取所有結(jié)果
String subject = rs.getString("subject");
int id = rs.getInt("id");
double score = rs.getDouble("score");
mlist.add(new Score(id, pScore.getName(), subject, score));
}
return mlist;
}
下面是一個(gè)小程序
//建立數(shù)據(jù)庫(kù)連接類
public class DAO {
// 放問(wèn)數(shù)據(jù)庫(kù)的鏈接地址
static String jdbc = "jdbc:mysql://localhost:3306/student?user=root&password=&characterEncoding=utf-8";
// 打開(kāi)鏈接
public static Connection connection() {
// 使用JDBC的步驟
// 1. 加載JDBC驅(qū)動(dòng)
try {
// 類的全名 包名+類名
Class.forName("com.mysql.jdbc.Driver");
// 2. 連接數(shù)據(jù)庫(kù)
Connection conn = DriverManager.getConnection(jdbc);
return conn;
} catch (Exception e) {
System.out.println("驅(qū)動(dòng)加載失敗");
return null;
}
}
}
//分?jǐn)?shù)類
public class Score {
String name;
String id;
String subject;
double score;
public Score(String name, String subject, double score) {
super();
this.name = name;
this.subject = subject;
this.score = score;
}
@Override
public String toString() {
return "Score [name=" + name + ", id=" + id + ", subject=" + subject
+ ", score=" + score + "]";
}
public Score(String name, String id, String subject, double score) {
super();
this.name = name;
this.id = id;
this.subject = subject;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
}
//實(shí)現(xiàn)類
public class Test {
public static String TABLENAME = "score";
public static void main(String[] args) {
try {
Connection conn = DAO.connection();
if (conn != null) {
System.out.println("鏈接上了");
// createTable(conn);
// 插入一條記錄
// Score score = new Score("李四 ", "Android", 98);
// System.out.println(addScore2(conn, score));
// deleteScore(conn, score);
// updateScore(conn, score);
List<Score> list = queryScoreByName(conn, "王五"); //queryAllScore(conn);
for (Score score : list) {
System.out.println(score);
}
conn.close();
} else {
System.out.println("鏈接失敗 ");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// 創(chuàng)建一張表
public static boolean createTable(Connection conn) {
// 開(kāi)始執(zhí)行sql語(yǔ)句
String sql = "create table "
+ TABLENAME
+ "(id integer primary key auto_increment,name varchar(3) not null,subject varchar(20) not null,score double)";
// 要執(zhí)行一條語(yǔ)句,需要一個(gè)執(zhí)行的類 Statement
try {
Statement st = conn.createStatement();
int result = st.executeUpdate(sql);
System.out.println(result);
if (result != -1)
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
// 添加一條記錄
public static boolean addScore(Connection conn, Score score)
throws SQLException {
String sql = "insert into " + TABLENAME
+ "(name,subject,score) values('" + score.getName() + "','"
+ score.getSubject() + "'," + score.getScore() + ")";
System.out.println(sql);
Statement st = conn.createStatement();
int row = st.executeUpdate(sql);
if (row > 0)
return true;
return false;
}
// 添加一條記錄2
public static boolean addScore2(Connection conn, Score score)
throws SQLException {
// 占位符?來(lái)代替需要設(shè)置的參數(shù)
String sql = "insert into " + TABLENAME
+ "(name,subject,score) values(?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
// 必須給定?所代表的值
ps.setString(1, score.getName());
ps.setString(2, score.getSubject());
ps.setDouble(3, score.getScore());
// 調(diào)用無(wú)參的方法
int row = ps.executeUpdate();
if (row > 0)
return true;
return false;
}
public static boolean deleteScore(Connection conn, Score score)
throws SQLException {
String sql = "delete from " + TABLENAME + " where name=? and subject=?";
// 創(chuàng)建PrepareStatement
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, score.getName());
ps.setString(2, score.getSubject());
// ps.setDouble(3, score.getScore());
// 執(zhí)行
int row = ps.executeUpdate();
System.out.println(row);
if (row > 0)
return true;
return false;
}
public static boolean updateScore(Connection conn, Score score)
throws SQLException {
// 修改 score人他的科目的成績(jī)
String sql = "update " + TABLENAME
+ " set score=? where name=? and subject=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setDouble(1, score.getScore());
ps.setString(2, score.getName());
ps.setString(3, score.getSubject());
int row = ps.executeUpdate();
System.out.println(row);
if (row > 0)
return true;
return false;
}
public static List<Score> queryAllScore(Connection conn)
throws SQLException {
String sql = "select * from " + TABLENAME;
// 開(kāi)始查詢
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
List<Score> list = new ArrayList<Score>();
while (rs.next()) {
// 這里可以通過(guò)rs獲取所有結(jié)果
String id = rs.getString("id");
String name = rs.getString("name");
String subject = rs.getString("subject");
double score = rs.getDouble("score");
list.add(new Score(name, id, subject, score));
}
// 結(jié)束
return list;
}
public static List<Score> queryScoreByName(Connection conn, String name)
throws SQLException {
String sql = "select * from " + TABLENAME + " where name=?";
PreparedStatement pt = conn.prepareStatement(sql);
pt.setString(1, name);
ResultSet rs = pt.executeQuery();
List<Score> list = new ArrayList<>();
while (rs.next()) {
String subject = rs.getString("subject");
String id = rs.getString("id");
double score = rs.getDouble("score");
list.add(new Score(name, id, subject, score));
}
return list;
}
- Java多線程編程之使用Exchanger數(shù)據(jù)交換實(shí)例
- Java利用剪貼板實(shí)現(xiàn)交換程序間數(shù)據(jù)的方法
- java常見(jiàn)的字符串操作和日期操作匯總
- 淺談java中的對(duì)象、類、與方法的重載
- Java刪除文件、目錄及目錄下所有文件的方法實(shí)例
- Java利用正則表達(dá)式提取數(shù)據(jù)的方法
- Java 定時(shí)器(Timer)及線程池里使用定時(shí)器實(shí)例代碼
- java 內(nèi)部類(匿名類,匿名對(duì)象,靜態(tài)內(nèi)部類)詳解及實(shí)例
- java 線程鎖詳細(xì)介紹及實(shí)例代碼
- Java 實(shí)現(xiàn)漢字轉(zhuǎn)換為拼音的實(shí)例
- java 交換兩個(gè)數(shù)據(jù)的方法實(shí)例詳解
相關(guān)文章
Spring?Boot使用線程池處理上萬(wàn)條數(shù)據(jù)插入功能
這篇文章主要介紹了Spring?Boot使用線程池處理上萬(wàn)條數(shù)據(jù)插入功能,使用步驟是先創(chuàng)建一個(gè)線程池的配置,讓Spring Boot加載,用來(lái)定義如何創(chuàng)建一個(gè)ThreadPoolTaskExecutor,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-08-08
Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過(guò)程圖解
這篇文章主要介紹了Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
maven插件assembly使用及springboot啟動(dòng)腳本start.sh和停止腳本 stop.sh
這篇文章主要介紹了maven插件assembly使用及springboot啟動(dòng)腳本start.sh和停止腳本 stop.sh的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
關(guān)于IDEA創(chuàng)建spark maven項(xiàng)目并連接遠(yuǎn)程spark集群?jiǎn)栴}
這篇文章主要介紹了IDEA創(chuàng)建spark maven項(xiàng)目并連接遠(yuǎn)程spark集群,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
Java遞歸算法詳解(動(dòng)力節(jié)點(diǎn)整理)
Java遞歸算法是基于Java語(yǔ)言實(shí)現(xiàn)的遞歸算法。遞歸算法對(duì)解決一大類問(wèn)題很有效,它可以使算法簡(jiǎn)潔和易于理解。接下來(lái)通過(guò)本文給大家介紹Java遞歸算法相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧2017-03-03
Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例
本篇文章主要介紹了Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Springboot 如何指定獲取自己寫(xiě)的配置properties文件的值
這篇文章主要介紹了Springboot 如何指定獲取自己寫(xiě)的配置properties文件的值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07

