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ù)打開之后一定要記得關(guān)。
conn.close();
1. 執(zhí)行SQL語句 (創(chuàng)建表,插入,刪除,更新)
使用Statemant
Statemant st = conn.createStatemant(); int row = st.executeUpdate(sql語句);//不能做查詢操作。
使用PrepareStatement
可以使用?占位符來代替你需要傳遞的參數(shù)
String sql = "insert into " + TABLENAME + "(name,subject,score) values(?,?,?)"; PrepareStatement pt = conn.prepareStatement(sql); //給每一位占位符設(shè)置值,下標(biāo)從1開始 pt.setString(1,score.getName()); pt.setString(2.score.getSubject()); pt.setDouble(3,score.getScore()); //使用無參的方法 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()) { // 這里可以通過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 { // 放問數(shù)據(jù)庫(kù)的鏈接地址 static String jdbc = "jdbc:mysql://localhost:3306/student?user=root&password=&characterEncoding=utf-8"; // 打開鏈接 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) { // 開始執(zhí)行sql語句 String sql = "create table " + TABLENAME + "(id integer primary key auto_increment,name varchar(3) not null,subject varchar(20) not null,score double)"; // 要執(zhí)行一條語句,需要一個(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 { // 占位符?來代替需要設(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)用無參的方法 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; // 開始查詢 Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); List<Score> list = new ArrayList<Score>(); while (rs.next()) { // 這里可以通過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常見的字符串操作和日期操作匯總
- 淺談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使用線程池處理上萬條數(shù)據(jù)插入功能
這篇文章主要介紹了Spring?Boot使用線程池處理上萬條數(shù)據(jù)插入功能,使用步驟是先創(chuàng)建一個(gè)線程池的配置,讓Spring Boot加載,用來定義如何創(chuàng)建一個(gè)ThreadPoolTaskExecutor,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-08-08Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過程圖解
這篇文章主要介紹了Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09maven插件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-08Java遞歸算法詳解(動(dòng)力節(jié)點(diǎn)整理)
Java遞歸算法是基于Java語言實(shí)現(xiàn)的遞歸算法。遞歸算法對(duì)解決一大類問題很有效,它可以使算法簡(jiǎn)潔和易于理解。接下來通過本文給大家介紹Java遞歸算法相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧2017-03-03Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例
本篇文章主要介紹了Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Springboot 如何指定獲取自己寫的配置properties文件的值
這篇文章主要介紹了Springboot 如何指定獲取自己寫的配置properties文件的值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07