accp8.0轉換教材第6章連接MySQL理解與練習

来源:http://www.cnblogs.com/a782126844/archive/2017/06/30/7097560.html
-Advertisement-
Play Games

JDBC_ODBC,純java方式連接mysql 1.單詞部分 ①JDBCjava連接資料庫②driver manager驅動③connection連接④statement聲明 ⑤execute執行⑥query查詢⑦result set結果集⑧connectivity連通⑨access存取使用 en ...


JDBC_ODBC,純java方式連接mysql

1.單詞部分

①JDBCjava連接資料庫②driver manager驅動③connection連接④statement聲明

⑤execute執行⑥query查詢⑦result set結果集⑧connectivity連通⑨access存取使用

entity實體

二.預習部分

1.jdbc的主要作用是什麼

連接資料庫

2.jdbc兩種常用的驅動方式

橋連接和純java連接

3.什麼是持久化

將程式中數據在瞬時狀態轉換為永久狀態的操作

4.什麼是dao模式該模式的優點有哪些

在我的理解中dao不是一種開發模式 最多也就算一個

數據操作層吧  書上的是通過對業務層提供數據抽象層介面

有利於開發人員分層開發,降低代碼的耦合性,進行數據持久化操作

5.java的properties位於哪個包,派生自哪個類

java.until;  hashtable類

三.練習部分

1.使用純java方式連接資料庫,併進行異常處理(mysql-connector-java-5.1.0-bin.jar)首先要導包

直接測試類就行了

package workOne;

import java.sql.Connection;
import java.sql.DriverManager;

public class test {

/**
* @param args
*/
//private static Logger logger=Logger.getLogger(test.class.getName());
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn=null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e) {
// TODO: handle exception
//logger.error(e);
e.printStackTrace();
}
try {
conn=DriverManager.getConnection(
"jdbc:mysql://localhost:3306/epet","root","123"
);
System.out.println("建立連接成功!");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
try {
if(null!=conn){
conn.close();
System.out.println("關閉連接成功!");

}
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}

}
}

}

2.實現寵物主人登錄的數據訪問

首先要創建dao包(basedao和masterdao類):

package Dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class BaseDao {
private String driver="com.mysql.jdbc.Driver";
private String url="jdbc:mysql://localhost:3306/epet";
private String user="root";
private String pass="123";
PreparedStatement pstmt=null;
ResultSet resultSet=null;
Connection conn=null;
//獲取連接
public Connection getConnection() {
if(conn==null){
try {
Class.forName(driver);
conn=DriverManager.getConnection(url,user,pass);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}

}
return conn;

}

public void closeConn(Connection con,Statement stmt,ResultSet rs) {
if(rs!=null){
try {
rs.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}


}
if(stmt!=null){
try {
stmt.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}


}
if(conn!=null){
try {
conn.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}


}
}

public int DoUpdate(String sql,Object[]param) {

int num=0;
conn=getConnection();
try {
pstmt=conn.prepareStatement(sql);
if(param!=null){
for (int i = 0; i < param.length; i++) {
pstmt.setObject(i+1, param[i]);
}


}
num=pstmt.executeUpdate();

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{

closeConn(conn, pstmt, null);
}
return num;
}

public ResultSet DoQuery(String sql,Object [] para) {
conn=getConnection();

try {
pstmt=conn.prepareStatement(sql);
if(para!=null){
for (int i = 0; i < para.length; i++) {

pstmt.setObject(i+1,para[i]);
}

}
resultSet=pstmt.executeQuery();

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return resultSet;

}
}

//master    dao

package Dao;

import entity.master;

public interface masterDao {
boolean findMaster(master mas);
}

//再創建daoimpl包dao的實現類

package daoImpl;

import java.sql.ResultSet;
import java.sql.SQLException;

import entity.master;
import Dao.BaseDao;
import Dao.masterDao;

public class masterDaoImpl extends BaseDao implements masterDao{


public boolean findMaster(master mas) {
// TODO Auto-generated method stub
String sql="SELECT * FROM `master` WHERE `name`=? AND `password`=?";
Object[]para={mas.getName(),mas.getPass()};
ResultSet rs=DoQuery(sql, para);
boolean flag=false;
//.masterDaoImpl//master ma=new master();
try {
while (rs.next()) {
flag=true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}

}

//創建三個實體類主人類  寵物種類類  寵物類

//master

package entity;

public class master {
private int id;
private String name;
private int pass;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPass() {
return pass;
}
public void setPass(int pass) {
this.pass = pass;
}
}

//pet_type寵物種類

package entity;

public class pet_type {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

//寵物類pet

package entity;

public class pet {
private int id;
private int master_id;
private String name;
private int type_id;
private int health;
private int love;
private String adop_time;
private int status;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getMaster_id() {
return master_id;
}
public void setMaster_id(int master_id) {
this.master_id = master_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getType_id() {
return type_id;
}
public void setType_id(int type_id) {
this.type_id = type_id;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public String getAdop_time() {
return adop_time;
}
public void setAdop_time(String adop_time) {
this.adop_time = adop_time;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}

}

//創建test包main介面

package test;

import java.util.Scanner;

import daoImpl.masterDaoImpl;

import Dao.masterDao;

import entity.master;

public class test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
System.out.println("-------歡迎光臨寵物樂園-------");
System.out.println("請輸入登陸名:");
String loginid=input.next();
System.out.println("請輸入密碼:");
int loginpass=input.nextInt();
master mas=new master();
mas.setName(loginid);
mas.setPass(loginpass);
masterDao masterDao=new masterDaoImpl();
boolean res = masterDao.findMaster(mas);
if(res){
System.out.println("登陸成功!");
}
else{
System.out.println("登錄失敗!");
}
}

}

3.實現寵物主人登錄業務

在第二個練習已經做了第三個

 

 

總結:

1.由sun公司提供jdbc的介面規範  jdbc-api   資料庫廠商或第三方提供針對 不同資料庫的具體實現,這就是jdbc驅動

2.jdbc訪問資料庫的步驟首先載入驅動,與資料庫取得聯繫,再創建statement或preparedstatement對象,再發送sql語句,並取得返回結果,最後處理

3.preparedstatement介面繼承自statement介面。提高代碼的可讀姓和可維護性,sql語句的執行性能和安全性

4.dao全稱data access objects(數據存取對象)

 

歡迎提問,歡迎指錯,歡迎討論學習信息 有需要的私聊 發佈評論即可 都能回覆的

  原文在博客園http://www.cnblogs.com/a782126844/有需要可以聯繫扣扣:2265682997

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 資料庫事務的隔離等級,英語叫做 Transaction Isolation Level。 最近在給客戶維護項目的時候,對一個表在兩個進程中同時做更新和查詢時碰到了死鎖(DeadLock),數據表裡有幾百萬上千萬條記錄,上面的處理當時是更新幾千條記錄, 查詢整張表。 這是前提,為了搞明白這個死鎖,大概 ...
  • 查詢的格式: select [distinct] *(所有)| 欄位名... from 表名 [where 條件過濾]查詢指定欄位信息pname priceselect pname,price from products; 查詢表中所有欄位select * from products; 去除金額重覆 ...
  • 導讀: 分類問題是機器學習應用中的常見問題,而二分類問題是其中的典型,例如垃圾郵件的識別。本文基於UCI機器學習資料庫中的銀行營銷數據集,從對數據集進行探索,數據預處理和特征工程,到學習模型的評估與選擇,較為完整的展示瞭解決分類問題的大致流程。文中包含了一些常見問題的處理方式,例如缺失值的處理、非數 ...
  • 1 Redis記憶體管理 Redis記憶體管理相關文件為zmalloc.c/zmalloc.h,其只是對C中記憶體管理函數做了簡單的封裝,屏蔽了底層平臺的差異,並增加了記憶體使用情況統計的功能。 void *zmalloc(size_t size) { // 多申請的一部分記憶體用於存儲當前分配了多少自己的內 ...
  • 本文用到的資料庫如下: CREATE DATABASE exam; / 創建部門表 / CREATE TABLE dept( deptno INT PRIMARY KEY, dname VARCHAR(50), loc VARCHAR(50) ); / 創建雇員表 / CREATE TABLE em ...
  • PostgreSQL在Update時使用Substring函數截取字元串並且加上CASE WHEN THEN條件判斷 ...
  • (一)執行sql遇到的錯誤如下: ### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (38708097 > 4194304). You can change this value on the ...
  • 一 概述 1 背景 理論上將全部數據放到同一張表中很難實現,實際上即使實現了,表也很龐大,很冗雜,不便於查詢與維護,因此將不同的數據存放到不同的表中,需要時連接各表進行查詢。 2 執行過程 兩張表進行連接查詢時,將其中一張表中的每一行數據與另外一張表的全部數據進行對比,如果滿足給定的條件,則將這兩行 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...