麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

JDBC案例演示,供參考

2019-11-11 07:49:36
字體:
來源:轉載
供稿:網友

在這寫一下JDBC的案例,將JDBC的一些功能演示下,供參考,至于實體類在此我就不寫出來了,大家根據需求不同記得導入對應的驅動包到項目中,我這里演示的是以MySQL為例,其實區別都不大,如有不對的地方歡迎糾正。

import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import com.mysql.jdbc.PReparedStatement;import java.sql.ResultSet;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.sql.Clob;import java.sql.DatabaseMetaData;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Savepoint;public class JDBCDemo { // 數據庫地址 localhost表示本地, //3306是mysql默認的端口,db_bank是要鏈接的數據庫 private static String dbUrl="jdbc:mysql://localhost:3306/db_bank"; // 用戶名 private static String dbUserName="root"; // 密碼 private static String dbPassWord="123456"; // 驅動名稱 這里是mysql驅動 private static String jdbcName="com.mysql.jdbc.Driver"; //靜態塊,最優先執行 static{ try{ Class.forName(jdbcName);//加載驅動 }catch(Exception e){ e.printStackTrace();//打印錯誤信息 } } /** * 獲取數據庫連接 * @return * @throws Exception */ public static Connection getCon()throws Exception{ //獲取數據庫鏈接 Connection con=DriverManager.getConnection(dbUrl,dbUserName,dbPassword); return con; } /** * 關閉數據庫連接 * @param con * @param sta * @param rs * @throws Exception */ public static void close(Connection conn,Statement sta,ResultSet rs){ try{ if(rs!=null){ rs.close();//關閉ResultSet } if(sta!=null){ sta.close();//關閉Statement } if(conn!=null){ conn.close();//關閉Connection } }catch(Exception e){ e.printStackTrace();//打印異常信息 } } /** * 新增演示[添加圖書] * @param book 要新增的圖書對象 * @return 返回受影響的行數 * @throws Exception */ private int addBook(Book book)throws Exception{ Connection con=getCon();//得到數據庫鏈接 //得到PreparedStatement對象 PreparedStatement pstmt=con.prepareStatement(sql); pstmt.setString(1, book.getBookName()); // 設置圖書名稱 pstmt.setFloat(2, book.getPrice()); // 設置圖書價格 pstmt.setString(3, book.getAuthor()); // 設置圖書作者 pstmt.setInt(4, book.getBookTypeId()); // 設置圖書類型Id //--------- 大數據字符集 -------------- InputStream inputStream=new FileInputStream(new File("c:/hello.text"));//得到輸入流 //大數據類型,設置圖書內容, //這里演示mysql數據庫類型是longtext pstmt.setAsciiStream(5,inputStream,context.length()); //----大數據二進制,一般存儲圖片,視頻,音頻等 ---- //將圖片轉為輸入流 InputStream inputStream2=new FileInputStream(new File("c:/a.jpg")); //大數據類型,設置封面圖片, //這里演示mysql數據庫類型是longblod pstmt.setBinaryStream(6, inputStream2, pic.length()); //執行并返回受影響的行數 int result=pstmt.executeUpdate(); if(result>0){//大于0表示新增成功 //獲取生成器 ResultSet rs=pstmt.getGeneratedKeys(); if(rs.next()){//判斷是否有值 //得到新增數據后的主鍵值 int key=rs.getInt(1); } } close(con,pstmt,null);//關閉連接 return result; } /** * 修改演示[更新圖書] * @param book 要修改的圖書對象 * @return 返回受影響的行數 * @throws Exception */ private int updateBook(Book book)throws Exception{ Connection con=getCon();//得到數據庫鏈接 //新增語句 String sql="update t_book set bookName=?,price=?,author=?,bookTypeId=? where id=?"; //得到PreparedStatement對象 PreparedStatement pstmt=con.prepareStatement(sql); pstmt.setString(1, book.getBookName());//設置圖書名稱 pstmt.setFloat(2, book.getPrice());//設置圖書價格 pstmt.setString(3, book.getAuthor());//設置圖書作者 pstmt.setInt(4, book.getBookTypeId());//設置圖書類型Id pstmt.setInt(5, book.getId());//設置要修改的圖書id //執行修改并返回受影響的行數 int result=pstmt.executeUpdate(); close(con,pstmt,null);//關閉連接 return result; } /** * 刪除演示[刪除圖書] * @param id 要刪除的圖書id * @return 返回受影響的行數 * @throws Exception */ private int deleteBook(int id)throws Exception{ Connection con=getCon();//得到數據庫鏈接 String sql="delete from t_book where id=?";//刪除語句 //得到PreparedStatement對象 PreparedStatement pstmt=con.prepareStatement(sql); pstmt.setInt(1, id);//設置要刪除的圖書id //執行刪除并返回受影響的行數 int result=pstmt.executeUpdate(); close(con,pstmt,null);//關閉連接 return result; } /** * 查詢演示[查詢所有圖書] * @return 返回list集合 * @throws Exception */ private List<Book> listBook()throws Exception{ List<Book> bookList=new ArrayList<Book>(); Connection con = getCon(); //得到數據庫鏈接 String sql = "select * from t_book";//查詢語句 //得到PreparedStatement對象 PreparedStatement pstmt = con.prepareStatement(sql); //執行并返回結果集ResultSet ResultSet rs = pstmt.executeQuery(); while (rs.next()) {//遍歷結果集rs.next()返回true表示有數據 int id = rs.getInt("id"); // 獲取編號id String bookName = rs.getString("bookName"); // 獲取圖書名稱 bookName float price = rs.getFloat("price"); // 獲取圖書價格 price String author = rs.getString("author"); // 獲取圖書作者 author int bookTypeId = rs.getInt("bookTypeId"); // 獲取圖書類別id //---- 大數據字符集,一般存儲大文本等內容 ---- //大數據類型,獲取圖書內容, //這里演示mysql數據庫類型是longtext Clob c=rs.getClob("context"); //轉為字符串 String context=c.getSubString(1, (int)c.length()); //---大數據二進制,一般存儲圖片,視頻,音頻等 ------- //創建一個輸出流, //將數據庫中的封面圖片保存到該路徑中c:/pic.jpg FileOutputStream out=new FileOutputStream(new File("c:/pic.jpg")); //大數據類型,獲取封面圖片, //這里演示mysql數據庫類型是longblod out.write(b.getBytes(1,(int)b.length())); Book book=new Book(id,bookName,price, author,bookTypeId);//封裝圖書對象 bookList.add(book);//將圖書對象保存集合中 } close(con,pstmt,rs);//關閉連接 return bookList; } /** * JDBC調用存儲過程演示 * 數據庫中有一個存儲過程為 pro_getBookNameById * 該存儲過程功能是通過編號(id)查詢圖書名稱(bookName) * 該存儲過程中有分別有一個輸入參數 * 跟一個輸出參數(輸出參數名稱為 bN ) * @param id 圖書編號 * @return 返回圖書名稱 * @throws Exception */ private String getBookNameById(int id) throws Exception{ Connection con=getCon();// 獲取數據庫連接 //調用存儲過程語句,第一個為輸入參數, //第二個是輸出參數,輸出參數名稱是bN String sql="{CALL pro_getBookNameById(?,?)}"; //得到CallableStatement對象 CallableStatement cstmt=con.prepareCall(sql); cstmt.setInt(1, id);//設置第一個參數(即輸入參數) //設置返回類型(即輸出參數類型),指的是數據庫中的數據類型 cstmt.registerOutParameter(2, Types.VARCHAR); cstmt.execute();//執行 //獲取返回值(即輸出參數 bN ) String bookName=cstmt.getString("bN"); close(con,cstmt,null);//關閉連接 return bookName; } /** *元數據演示 */ public void demo () throws Exception { Connection con=getCon();//獲取數據庫鏈接對象 //---------- 元數據 ---------------- //獲取DatabaseMetaData對象 DatabaseMetaData dmd=con.getMetaData(); //dmd.getDatabaseProductName()獲取數據庫名稱 System.out.println("數據庫名稱:"+dmd.getDatabaseProductName()); //getDriverMajorVersion()得到數據庫大版本號, //dmd.getDriverMinorVersion()得到數據庫小版本號 System.out.println("數據庫版本:"+dmd.getDriverMajorVersion()+"."+dmd.getDriverMinorVersion()); String sql="select * from t_book";//查詢語句 //得到PreparedStatement對象 PreparedStatement pstmt=con.prepareStatement(sql); // 獲取元數據列的總數(即有多少列(字段)) int num=rsmd.getColumnCount(); System.out.println("共有"+num+"列"); for(int i=1;i<=num;i++){ //rsmd.getColumnName(i)獲取第i列的列名稱(即字段名稱), //rsmd.getColumnTypeName(i)獲取第i列的數據類型 System.out.println(rsmd.getColumnName(i)+"," +rsmd.getColumnTypeName(i)); } } /** * *事務演示 **/ public static void main(String[] args) throws Exception { Connection con=null; Savepoint sp=null; try { con=getCon();//得到數據庫連接 //取消自動提交(將事務設置為手動提交) con.setAutoCommit(false); System.out.println("張三開始向李四轉賬!"); int account=500; outCount(con, "張三", account);//此處假設轉出賬操作 //演示:設置一個保存點(即數據庫的備份點) //sp=con.setSavepoint(); inCount(con, "李四", account);//此處假設轉入賬操作 System.out.println("轉賬成功!"); con.commit(); //提交事務 } catch (Exception e) { con.rollback(); //回滾事務 //con.rollback(sp);//回滾事務到sp保存點 e.printStackTrace();//打印錯誤信息 }finally{ con.close();//關閉連接 } } /** * 假設轉出操作 * @param con 數據庫連接 * @param accountName 賬戶 * @param account 金額 * @throws Exception */ private static void outCount(Connection con,String accountName,int account)throws Exception{ String sql="update t_account set accountBalance=accountBalance-account? where accountName=?";// PreparedStatement pstmt=con.prepareStatement(sql); pstmt.setInt(1, account); pstmt.setString(2, accountName); pstmt.executeUpdate(); } /** * 假設轉入操作 * @param con 數據庫連接 * @param accountName 賬戶 * @param account 金額 * @throws Exception */ private static void inCount(Connection con,String accountName,int account)throws Exception{ String sql="update t_account set account=accountBalance+account? where accountName=?"; PreparedStatement pstmt=con.prepareStatement(sql); pstmt.setInt(1, account); pstmt.setString(2, accountName); pstmt.executeUpdate(); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日本精品久久久一区二区三区 | 国产一区二区精品在线观看 | 麻豆传传媒久久久爱 | 久久久免费观看完整版 | 欧美福利视频一区二区三区 | 欧美国产成人在线 | 黄色aaa视频 | 色欲香天天天综合网站 | 欧美人成在线视频 | 一道本不卡一区 | 91成人影库 | 成人不卡在线观看 | 毛片视频大全 | 得得啪在线视频 | av在线播放网址 | www.69色 | 国产精品久久久久久久久久东京 | 精品成人久久久 | 午夜小视频免费观看 | 男人的天堂毛片 | 91国内精品久久久久免费影院 | 99re热视频这里只精品 | 亚州综合 | 亚洲精品在线观看网站 | 免费试看av | 成人资源在线观看 | 成人短视频在线观看免费 | 免费网站看毛片 | 国产一区视频在线观看免费 | 欧美日韩在线视频一区 | 欧美日韩免费在线观看视频 | 暴力强行进如hdxxx | 国产精品久久久久久一区二区三区 | 国产亚洲欧美日韩高清 | 免费观看黄色一级视频 | 91成人天堂久久成人 | 国产一级在线免费观看 | 国产精品久久久久久久av三级 | 久久久久久艹 | 欧美一级毛片免费观看 | 亚洲一区二区中文 |