一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - JDBC 使用說明(流程、架構、編程)

JDBC 使用說明(流程、架構、編程)

2020-01-03 14:32mdxy-dxy JAVA教程

這篇文章主要介紹了JDBC 使用說明,需要的朋友可以參考下

JDBC API 允許用戶訪問任何形式的表格數據,尤其是存儲在關系數據庫中的數據。

執行流程:

•連接數據源,如:數據庫。

•為數據庫傳遞查詢和更新指令。

•處理數據庫響應并返回的結果。

JDBC 架構
分為雙層架構和三層架構。

雙層

JDBC 使用說明(流程、架構、編程)

作用:此架構中,Java Applet 或應用直接訪問數據源。

條件:要求 Driver 能與訪問的數據庫交互。

機制:用戶命令傳給數據庫或其他數據源,隨之結果被返回。

部署:數據源可以在另一臺機器上,用戶通過網絡連接,稱為 C/S配置(可以是內聯網或互聯網)。

三層

JDBC 使用說明(流程、架構、編程)

側架構特殊之處在于,引入中間層服務。

流程:命令和結構都會經過該層。

吸引:可以增加企業數據的訪問控制,以及多種類型的更新;另外,也可簡化應用的部署,并在多數情況下有性能優勢。

歷史趨勢: 以往,因性能問題,中間層都用 C 或 C++ 編寫,隨著優化編譯器(將 Java 字節碼 轉為 高效的 特定機器碼)和技術的發展,如EJB,Java 開始用于中間層的開發這也讓 Java 的優勢突顯出現出來,使用 Java 作為服務器代碼語言,JDBC隨之被重視。

JDBC 編程步驟

加載驅動程序:

?
1
2
3
4
5
Class.forName(driverClass)
//加載MySql驅動
Class.forName("com.mysql.jdbc.Driver")
//加載Oracle驅動
Class.forName("oracle.jdbc.driver.OracleDriver")

獲得數據庫連接:

 

復制代碼 代碼如下:

DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc", "root", "root");

 

創建Statement\PreparedStatement對象:

 

復制代碼 代碼如下:

conn.createStatement();
conn.prepareStatement(sql);

 

完整實例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 
public class DbUtil {
 
 public static final String URL = "jdbc:mysql://localhost:3306/imooc";
 public static final String USER = "liulx";
 public static final String PASSWORD = "123456";
 
 public static void main(String[] args) throws Exception {
  //1.加載驅動程序
  Class.forName("com.mysql.jdbc.Driver");
  //2. 獲得數據庫連接
  Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
  //3.操作數據庫,實現增刪改查
  Statement stmt = conn.createStatement();
  ResultSet rs = stmt.executeQuery("SELECT user_name, age FROM imooc_goddess");
  //如果有數據,rs.next()返回true
  while(rs.next()){
   System.out.println(rs.getString("user_name")+" 年齡:"+rs.getInt("age"));
  }
 }
}

增刪改查

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
public class DbUtil {
 public static final String URL = "jdbc:mysql://localhost:3306/imooc";
 public static final String USER = "liulx";
 public static final String PASSWORD = "123456";
 private static Connection conn = null;
 static{
  try {
   //1.加載驅動程序
   Class.forName("com.mysql.jdbc.Driver");
   //2. 獲得數據庫連接
   conn = DriverManager.getConnection(URL, USER, PASSWORD);
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  }
 }
 
 public static Connection getConnection(){
  return conn;
 }
}
 
//模型
package liulx.model;
 
import java.util.Date;
 
public class Goddess {
 
 private Integer id;
 private String user_name;
 private Integer sex;
 private Integer age;
 private Date birthday; //注意用的是java.util.Date
 private String email;
 private String mobile;
 private String create_user;
 private String update_user;
 private Date create_date;
 private Date update_date;
 private Integer isDel;
 //getter setter方法。。。
}
 
//---------dao層--------------
package liulx.dao;
 
import liulx.db.DbUtil;
import liulx.model.Goddess;
 
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
 
public class GoddessDao {
 //增加
 public void addGoddess(Goddess g) throws SQLException {
  //獲取連接
  Connection conn = DbUtil.getConnection();
  //sql
  String sql = "INSERT INTO imooc_goddess(user_name, sex, age, birthday, email, mobile,"+
   "create_user, create_date, update_user, update_date, isdel)"
    +"values("+"?,?,?,?,?,?,?,CURRENT_DATE(),?,CURRENT_DATE(),?)";
  //預編譯
  PreparedStatement ptmt = conn.prepareStatement(sql); //預編譯SQL,減少sql執行
 
  //傳參
  ptmt.setString(1, g.getUser_name());
  ptmt.setInt(2, g.getSex());
  ptmt.setInt(3, g.getAge());
  ptmt.setDate(4, new Date(g.getBirthday().getTime()));
  ptmt.setString(5, g.getEmail());
  ptmt.setString(6, g.getMobile());
  ptmt.setString(7, g.getCreate_user());
  ptmt.setString(8, g.getUpdate_user());
  ptmt.setInt(9, g.getIsDel());
 
  //執行
  ptmt.execute();
 }
 
 public void updateGoddess(){
  //獲取連接
  Connection conn = DbUtil.getConnection();
  //sql, 每行加空格
  String sql = "UPDATE imooc_goddess" +
    " set user_name=?, sex=?, age=?, birthday=?, email=?, mobile=?,"+
    " update_user=?, update_date=CURRENT_DATE(), isdel=? "+
    " where id=?";
  //預編譯
  PreparedStatement ptmt = conn.prepareStatement(sql); //預編譯SQL,減少sql執行
 
  //傳參
  ptmt.setString(1, g.getUser_name());
  ptmt.setInt(2, g.getSex());
  ptmt.setInt(3, g.getAge());
  ptmt.setDate(4, new Date(g.getBirthday().getTime()));
  ptmt.setString(5, g.getEmail());
  ptmt.setString(6, g.getMobile());
  ptmt.setString(7, g.getUpdate_user());
  ptmt.setInt(8, g.getIsDel());
  ptmt.setInt(9, g.getId());
 
  //執行
  ptmt.execute();
 }
 
 public void delGoddess(){
  //獲取連接
  Connection conn = DbUtil.getConnection();
  //sql, 每行加空格
  String sql = "delete from imooc_goddess where id=?";
  //預編譯SQL,減少sql執行
  PreparedStatement ptmt = conn.prepareStatement(sql);
 
  //傳參
  ptmt.setInt(1, id);
 
  //執行
  ptmt.execute();
 }
 
 public List<Goddess> query() throws SQLException {
  Connection conn = DbUtil.getConnection();
  Statement stmt = conn.createStatement();
  ResultSet rs = stmt.executeQuery("SELECT user_name, age FROM imooc_goddess");
 
  List<Goddess> gs = new ArrayList<Goddess>();
  Goddess g = null;
  while(rs.next()){
   g = new Goddess();
   g.setUser_name(rs.getString("user_name"));
   g.setAge(rs.getInt("age"));
 
   gs.add(g);
  }
  return gs;
 }
 
 public Goddess get(){
  Goddess g = null;
  //獲取連接
  Connection conn = DbUtil.getConnection();
  //sql, 每行加空格
  String sql = "select * from imooc_goddess where id=?";
  //預編譯SQL,減少sql執行
  PreparedStatement ptmt = conn.prepareStatement(sql);
  //傳參
  ptmt.setInt(1, id);
  //執行
  ResultSet rs = ptmt.executeQuery();
  while(rs.next()){
   g = new Goddess();
   g.setId(rs.getInt("id"));
   g.setUser_name(rs.getString("user_name"));
   g.setAge(rs.getInt("age"));
   g.setSex(rs.getInt("sex"));
   g.setBirthday(rs.getDate("birthday"));
   g.setEmail(rs.getString("email"));
   g.setMobile(rs.getString("mobile"));
   g.setCreate_date(rs.getDate("create_date"));
   g.setCreate_user(rs.getString("create_user"));
   g.setUpdate_date(rs.getDate("update_date"));
   g.setUpdate_user(rs.getString("update_user"));
   g.setIsDel(rs.getInt("isdel"));
  }
  return g;
 }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产亚洲精品自在线亚洲情侣 | 午夜精品网| 国产亚洲精aa在线观看香蕉 | 国产精品日韩欧美一区二区 | 国产精品九九热 | 国产精品怡红院在线观看 | 日本色淫 | 欧美一级视频在线观看 | 久久人妻无码毛片A片麻豆 久久热这里只有 精品 | 俄罗斯美女破苞 | 精品亚洲永久免费精品 | 天天干夜夜添 | 太深了 太粗h1v1 | 13 sewang41| 2020年国产精品午夜福利在线观看 | 午夜精品久久久久久久99蜜桃i | 91国内精品线免费播放 | 四虎影业 | chinaspanking调教| 97爱干| 成品人视频免费观看 | 国产激情视频网站 | 日韩精选| 女人扒开下面让男人桶爽视频 | 国产白虎| 福利姬 magnet| ssni-497新任美脚女教师 | 青涩体验在线观看未删减 | 女bbbbxxx孕妇 | 香蕉 在线播放 | 强漂亮白丝女教师小说 | 久久er99热精品一区二区 | 描写细腻的高h肉 | 亚洲国产在线视频中文字 | 亚洲热在线视频 | 日韩视频免费一区二区三区 | 猫咪maomiav永久网址 | 无码日韩精品一区二区免费 | 91.prom在线观看国产 | 97大香伊在人人线色 | 亚洲第一区在线观看 |