日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

JDBC连接数据库及其执行操作

發(fā)布時間:2024/4/17 数据库 101 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDBC连接数据库及其执行操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:Alvin
功能:數(shù)據(jù)庫連接與實現(xiàn)增刪改查
時間:2019年3月4日08點33分
參考文章:https://www.2cto.com/database/201805/743741.html

一、總結(jié)

數(shù)據(jù)庫加載分為以下幾個步驟

第一步、加載驅(qū)動

MySQL的加載方式 Class.forName("com.mysql.jdbc.Driver"); Oracle的加載方式 Class.forName("oracle.jdbc.driver.OracleDriver"); SQLServer Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

第二步、創(chuàng)建連接

1、分開寫形式如下

String url = "jdbc:mysql://127.0.0.1:3306/要連接的數(shù)據(jù)庫表名"; String username = "root"; String password = "root"; Connection con = DriverManager.getConnection(url,username,password);

2、單獨寫成形式如下

Connection con=DriverManage.getConnection(url,username,password);

Connection con=DriverManage.getConnection("jdbc:mysql://127.0.0.1:3306/要連接的數(shù)據(jù)庫表名",username,password);

3、設(shè)置連接時編碼方式useUnicode=true&characterEncoding=UTF-8,如

String URL ="jdbc:mysql://127.0.0.1:3306/studentsuser=root&password=123&useUnicode=true&characterEncoding=UTF-8"; con = DriverManager.getConnection(URL);

4、確認(rèn)是否連接成功

//如果連接成功打印con不為空 System.out.println(con);  

第三步、創(chuàng)建語句執(zhí)行對象

Statement stmt=con.createStatement();  

第四步、得到數(shù)據(jù)庫執(zhí)行操作結(jié)果

一般情況下有如下幾個執(zhí)行類型

1、增加數(shù)據(jù)

int modifyLinesAdd = stmt.executeUpdate(sql1);//將返回被增加的行數(shù)

2、刪除數(shù)據(jù)

int modifyLinesDelete=stmt.executUpdate("delete from 表名 where 條件");//將返回發(fā)生修改的條數(shù)  

3、修改數(shù)據(jù)

int modifyLinesSwitch=stmt.executeUpdate();//將返回發(fā)生修改的行數(shù)

4、查詢操作

ResultSet rs=stmt.executQuery("select from 表名");//執(zhí)行查詢,返回的時Set集合

所以再只有再進行數(shù)據(jù)庫查詢的時候使用executeQuery()方法,再增、刪、改的時候執(zhí)行的都是executeUpdate()方法
還可以向數(shù)據(jù)庫中添加文件下面以圖片為例(因為時添加操作所以仍然使用的時executeUpdate()方法)
添加圖片數(shù)據(jù)源碼

File image = new File("C:/Users/lyp/Pictures/桌面背景/1.jpg"); //添加圖片的路徑 ps = con.prepareStatement("INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`,`icon`)" + " VALUES (,,,,);"); ps.setInt(1, numbefore+1); ps.setString(2, "蘭陵王"); ps.setString(3,"男"); ps.setInt(4,500); fis = new FileInputStream(image); ps.setBinaryStream(5, (InputStream) fis, (int) (image.length())); //檢查是否添加成功 int s = ps.executeUpdate(); if (s > 0) { System.out.println("Uploaded successfully !"); } else { System.out.println("unsucessfull to upload image."); }

查詢操作案例

ResultSet rs.stmt.executeQuery("select from student"); //處理執(zhí)行后的結(jié)果rs rs.next()用于判斷下一項是否存在,如果存在,將返回true while(rs.next()){int id=rs.getInt("id");//得到id這一列的數(shù)據(jù) String name=rs.getString("names");//得到姓名 String gender=rs.getString("gender");//得到性別 int age=rs.getAge("age");//得到年齡 }

第五步、執(zhí)行完畢數(shù)據(jù)庫的操作必須依次關(guān)閉打開的所有連接

//關(guān)閉rs rs.close(); //關(guān)閉stmt stmt.close(); //關(guān)閉con con.close();

二、完整案例源碼

//數(shù)據(jù)庫類源碼如下 public class DataBase {public static void main(String[] args) {int numbefore = 0;Connection con = null;//鏈接接口Statement stmt = null;//發(fā)送SQL語句接口ResultSet rs = null;//返回結(jié)果集接口PreparedStatement ps = null;FileInputStream fis; try {//加載驅(qū)動Class.forName("com.mysql.jdbc.Driver");//連接方法一/*String url = "jdbc:mysql://127.0.0.1:3306/students";//127.0.0.1可以改成localhost,表示本地主機。String username = "root";String password = "root";con = DriverManager.getConnection(url,username,password);*///連接方法二,useUnicode=true&characterEncoding=UTF-8是設(shè)置編碼方式String URL ="jdbc:mysql://127.0.0.1:3306/studentsuser=root&password=123&useUnicode=true&characterEncoding=UTF-8";con = DriverManager.getConnection(URL);//如果連接成功打印con不為空 System.out.println(con);stmt = con.createStatement();//con.close();//查詢數(shù)據(jù)庫中表的值,并且打印出來rs = stmt.executeQuery("select * from students_1");while(rs.next()) { //next()方法控制行數(shù),一行一行讀出返回結(jié)果集,直到nullint id = rs.getInt("id");//獲取id這一列的數(shù)據(jù)String name = rs.getString(2);//獲取第二列數(shù)據(jù)String sex = rs.getString("sex");int age = rs.getInt("age");System.out.println("編號="+id+",姓名="+name+",性別="+sex+",年齡="+age);//計算表中數(shù)據(jù)的行數(shù)numbefore = numbefore + 1;}//打印出操作數(shù)據(jù)前的行數(shù)System.out.println("操作前數(shù)據(jù)為"+numbefore+"行");//添加圖片數(shù)據(jù)File image = new File("C:/Users/lyp/Pictures/桌面背景/1.jpg"); //添加圖片的路徑ps = con.prepareStatement("INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`,`icon`)"+ " VALUES (,,,,);"); ps.setInt(1, numbefore+1); ps.setString(2, "蘭陵王"); ps.setString(3,"男");ps.setInt(4,500); fis = new FileInputStream(image); ps.setBinaryStream(5, (InputStream) fis, (int) (image.length())); //檢查是否添加成功int s = ps.executeUpdate(); if (s > 0) { System.out.println("Uploaded successfully !"); } else { System.out.println("unsucessfull to upload image."); } //添加一行數(shù)據(jù)//使用SQL語句:INSERT INTO `students`.`students_1` (`id`, `name`, `sex`, `age`) VALUES ('1','小七', '女', '10'); 添加數(shù)據(jù)/*String sql1 = "INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`) VALUES ('1','小七', '女', '10');";int result1 = stmt.executeUpdate(sql1);System.out.println("有"+result1+"行記錄被修改");*///動態(tài)添加一行數(shù)據(jù)/*ps = con.prepareStatement("INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`) VALUES (,'小七', '女', '10');");ps.setInt(1, numbefore+1);int result_x = ps.executeUpdate();System.out.println("有"+result_x+"行記錄被修改");*///修改一個數(shù)據(jù)//使用SQL語句:UPDATE `students`.`students_1` SET `name` = '康納' WHERE `age` = 12 AND `sex` = '男':修改age=12和sex=男的數(shù)據(jù)的name為康納String sql2 = "UPDATE `students`.`students_1` SET `name` = '康納' WHERE `id`= '4' AND `age` = '12' AND `sex` = '男'; ";int result2 = stmt.executeUpdate(sql2);System.out.println("有"+result2+"行記錄被修改");//刪除一行數(shù)據(jù)//使用SQL語句:DELETE FROM `students`.`students_1` WHERE `id` = '5' ; 刪除id=5的一行/*String sql3 = "DELETE FROM `students`.`students_1` WHERE `id` = '8' ; ";int result3 = stmt.executeUpdate(sql3);System.out.println("有"+result3+"行記錄被修改");*/} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} catch (FileNotFoundException e) {// TODO 自動生成的 catch 塊 e.printStackTrace();}finally {//依次關(guān)閉數(shù)據(jù)庫接口if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO 自動生成的 catch 塊 e.printStackTrace();}}if(stmt!=null) {try {stmt.close();} catch (SQLException e) {// TODO 自動生成的 catch 塊 e.printStackTrace();}}if(con!=null) {try {con.close();} catch (SQLException e) {// TODO 自動生成的 catch 塊 e.printStackTrace();}}}}}

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/kitor/p/10469036.html

總結(jié)

以上是生活随笔為你收集整理的JDBC连接数据库及其执行操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。