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

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

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;
 }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人久久久精品一区二区三区 | 成版人快猫永久破解版 | 亚洲成人在线播放 | 欧美va在线播放免费观看 | 魔法满屋免费观看完整版中文 | 青草免费在线 | 黑人巨大初黑人解禁作品 | 呜呜别塞了啊抽插 | 婷婷丁香色综合狠狠色 | 456在线观看 | 毛片大全高清免费 | chinese国产打屁股 | 日本 片 成人 在线 日b视频免费 | 美女被视频 | 午夜宅男影院 | 男女一级簧色带 | 国产精品毛片久久久久久久 | 国产精品成人在线播放 | 被老头肉至怀孕小说 | 97热久久免费频精品99国产成人 | 天若有情1992国语版完整版 | 精品99视频| 精品牛牛影视久久精品 | 白发在线视频播放观看免费 | 国产盗摄美女嘘嘘视频 | 男人香蕉好大好爽视频 | 亚洲国产精品无码中文在线 | 国产精品成人免费观看 | 久久久无码精品亚洲欧美 | 调教小荡娃h | 国产青草亚洲香蕉精品久久 | 日韩亚洲人成在线 | 范冰冰上面好大下面好紧 | 九哥草逼网 | 国产裸舞在线一区二区 | 逼123| 91动漫在线观看 | 国产精品视频免费观看 | 国产有码在线 | 亚洲香蕉伊在人在线观婷婷 | 88av免费观看 |