何谓JDBC?
JDK提供了一组API,让我们可以在java程序中连结到网络上的数据库,并执行SQL语句返回执行结果,这组API的应用我们通常称作JDBC技术;相关的API都在包java.sql.*下面。
Connection对象,则是由java.sql.DriverManager类的静态方法getConnection(…)得到,一但应用程序中得取一个Connection对象,即应用程序与数据库创建立了连结。随后,我们就可以通过操作Connection对象,创建Statement对象以执行sql语句,或从执行结果返回的ResultSet中取得查询结果。
以下是具体代码实现:
1) 连接到数据库:
1
2
3
4
5
6
7
8
9
10
11
12
|
public Connection getConnection() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQ LException{ |
需要注意的是以下的几个参数,URL:本地用户localhost 端口号默认为3306 后面是数据库的名字。Username默认为root,密码就是你设置的数据库密码。Driver:MySQL的驱动名应写成(驱动jar包要从www.mysql.org上下载):com.mysql.jdbc.Driver
如果是没有加载驱动将会出现找不到驱动的错误:
2)使用预编译sql
数据库处理SQL语句时,需要一个预编译过程,数据库可以把一些格式固定的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
26
|
//添加用户 //username password mail添加的用户信息
public void addMember(String username,String password,String mail){
try {
Connection con = this .getConnection();
//定义SQL语句
String sql = "insert into user(username,password,mail) values(?,?,?)" ;
//获取预编译SQL执行对象,同时检测数据库中是否已经存在该SQL语句,如果存在,不存入SQL语句,如果不存在则存入SQL语句
PreparedStatement pstmt = con.prepareStatement(sql);
//给每一个?占位符指定数据
pstmt.setString( 1 , username);
pstmt.setString( 2 , password);
pstmt.setString( 3 , mail);
int count = pstmt.executeUpdate(); //执行并记录次数
if (count> 0 ){
System.out.println( "插入数据成功!影响的记录条数是" +count);
} else {
System.out.println( "插入数据失败!" );
}
} catch (Exception e){
e.printStackTrace();
}
} |
每一个问号代表了一个表中的数值。其中的:pstmt.setString(1, username);1代表的是第几个占位符,既不能多也不能重复使用。
连结对象创建成功后,即可通过连结对象创建statement对象,以执行SQL语句。我们可将要执行的SQL语句分为两类,一类为需要返回结果表的select语句;一类为执行insert、update、delete操作的语句,因用程序只需要这类语句返回操作所生效的行数即可;对于这两种SQL操作,Statement在执行时可采用不同的方法,如是select语句,则使用executeQuery(sql)方法返回一个ResultSet对象,其中包含查询到的数据;如是另外三种,则使用executeUpdate(sql)方法,返回一个int型值,代表语句所影响的行数,如下代码示例:
1
2
3
4
5
6
7
8
|
Statement stmt=conn.createStatement(); String deleteSQL= "delete from post where id=2" ;
int t=stmt.executeUpdate(sql);
if (count> 0 ){
System.out.println( "删除数据成功!影响的记录条数是" +count);
} else {
System.out.println( "删除数据失败!" );
}
|
一下是针对具体项目的完整代码:
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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Petsdb {
public static void main(String[] args) {
Petsdb db = new Petsdb();
//查询
db.queryMember( "昭进" );
//添加
// db.addMember("昭进","123456","123456"); //删除字段
db.delete_field();
//增加字段
// db.add_field(); //删除用户
// db.delete_user("昭进"); //修改用户数据
// db.update("new昭进", 1); }
/**
* 获取链接对象
* @return connection对象
*/
public Connection getConnection() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
Connection conn = null ;
String url = "jdbc:mysql://localhost:3306/pets" ;//连接数据库的URL地址
String username = "root" ; //连接数据库的用户名
String password = "123456" ; //连接数据库的密码
String driver = "com.mysql.jdbc.Driver" ;
//加载驱动,然后再实例化驱动对象
Class.forName(driver).newInstance();
//建立连接对象
conn = DriverManager.getConnection(url, username, password);
return conn;
}
/**
* 添加用户
* @param username用户名
* @param password密码
* @param mail邮箱
*/
public void addMember(String username,String password,String mail){
try {
Connection con = this .getConnection();
//定义SQL语句
String sql = "insert into user(username,password,mail) values(?,?,?)" ;
//获取预编译SQL执行对象,同时检测数据库中是否已经存在该SQL语句,如果存在,不存入SQL语句,如果不存在则存入SQL语句
PreparedStatement pstmt = con.prepareStatement(sql);
//给每一个?占位符指定数据
pstmt.setString( 1 , username);
pstmt.setString( 2 , password);
pstmt.setString( 3 , mail);
int count = pstmt.executeUpdate(); //执行并记录次数
if (count> 0 ){
System.out.println( "插入数据成功!影响的记录条数是" +count);
} else {
System.out.println( "插入数据失败!" );
}
} catch (Exception e){
e.printStackTrace();
}
}
/**
* 查询用户
* @param condition 查询条件
*/
public void queryMember(String condition){
try {
Connection con = this .getConnection();
//定义SQL语句
String sql2 = "select * from user where username = ?" ;
// //获取拼接SQL的执行对象 // Statement stmt = con.createStatement(); // //执行拼接SQL语句返回一个结果集对象 // ResultSet rs = stmt.executeQuery(sql1); //获取预编译SQL执行对象,同时检测数据库中是否已经存在该SQL语句,如果存在,不存入SQL语句,如果不存在则存入SQL语句
PreparedStatement pstmt = con.prepareStatement(sql2);
//给每一个?占位符指定数据
pstmt.setString( 1 , condition);
ResultSet rs = pstmt.executeQuery(); //执行
System.out.println( "id username password mail" );
while (rs.next()){ //检测是否还有下一条记录
int id = rs.getInt( "id" );
String username = rs.getString( "username" );
String password = rs.getString( "password" );
String mail = rs.getString( "mail" );
System.out.println(id+ " " +username+ " " +password+ " " +mail);
}
} catch (Exception e){
e.printStackTrace();
}
}
/**
* 删除字段
*/
public void delete_field(){
try {
Connection con = this .getConnection();
//定义SQL语句
String sql = "alter table user drop sex" ;
//获取预编译SQL执行对象,同时检测数据库中是否已经存在该SQL语句,如果存在,不存入SQL语句,如果不存在则存入SQL语句
PreparedStatement pstmt = con.prepareStatement(sql);
int count = pstmt.executeUpdate(); //执行并记录次数
//判断如何执行成功?pstmt.executeUpdate();只返回被影响行数 count=0;
// if(count>0){ // System.out.println("删除字段成功!影响的记录条数是"+count); // }else{ // System.out.println("删除字段失败!"+count); // } } catch (Exception e){
e.printStackTrace();
}
}
/**
* 添加字段
*/
public void add_field(){
try {
Connection con = this .getConnection();
//定义SQL语句
String sql = "alter table user add sex boolean" ;
//获取预编译SQL执行对象,同时检测数据库中是否已经存在该SQL语句,如果存在,不存入SQL语句,如果不存在则存入SQL语句
PreparedStatement pstmt = con.prepareStatement(sql);
int count = pstmt.executeUpdate(); //执行并记录次数
//判断如何执行成功?pstmt.executeUpdate();只返回被影响行数 count=0;
// if(count>0){ // System.out.println("添加字段成功!影响的记录条数是"+count); // }else{ // System.out.println("添加字段失败!"+count); // } } catch (Exception e){
e.printStackTrace();
}
}
/**
* 删除用户
* @param username 用户名
*/
public void delete_user(String username){
try {
Connection con = this .getConnection();
//定义SQL语句
String sql = "delete from user where username = ?" ;
//获取预编译SQL执行对象,同时检测数据库中是否已经存在该SQL语句,如果存在,不存入SQL语句,如果不存在则存入SQL语句
PreparedStatement pstmt = con.prepareStatement(sql);
//给每一个?占位符指定数据
pstmt.setString( 1 , username);
int count = pstmt.executeUpdate(); //执行并记录次数
if (count> 0 ){
System.out.println( "删除数据成功!影响的记录条数是" +count);
} else {
System.out.println( "删除数据失败!" );
}
} catch (Exception e){
e.printStackTrace();
}
}
/**
* 修改用户资料
* @param username用户名
* @param id用户id
*/
public void update(String username, int id){
try {
Connection con = this .getConnection();
//定义SQL语句
String sql = "update user set username = ? where id = ?" ;
//获取预编译SQL执行对象,同时检测数据库中是否已经存在该SQL语句,如果存在,不存入SQL语句,如果不存在则存入SQL语句
PreparedStatement pstmt = con.prepareStatement(sql);
//给每一个?占位符指定数据
pstmt.setString( 1 , username);
pstmt.setInt( 2 , id);
int count = pstmt.executeUpdate(); //执行并记录次数
if (count> 0 ){
System.out.println( "修改数据成功!影响的记录条数是" +count);
} else {
System.out.println( "修改数据失败!" );
}
} catch (Exception e){
e.printStackTrace();
}
}
} |
相关推荐
JDBC实现Oracle数据库的增删改查
通过JDBC来对数据库增删改查的基础代码
jdbc操作oracle数据库(增删改查)jdbc操作oracle数据库(增删改查)
JSP+SERVLET+JDBC实现对数据库的增删改查
Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题 使用预编译对象PreparedStatement) 配置文件 db.properties(保存数据库账号和密码等) 工具类 JDBCUtil.java(抽取公共部分,解决硬...
使用JSP+SERVLET+JDBC实现对数据库的增删改查使用JSP+SERVLET+JDBC实现对数据库的增删改查
java 使用jdbc 连接mysql 实现增删改查java 使用jdbc 连接mysql 实现增删改查java 使用jdbc 连接mysql 实现增删改查java 使用jdbc 连接mysql 实现增删改查java 使用jdbc 连接mysql 实现增删改查
如题,采用jdbc实现增删改查,范例采用mysql数据库,没有实现分页,适合初学者
用JDBC连接OpenGauss Postgresql 实现增删改查功能的图书管理系统
jdbc+jsp+servlet实现对数据库的增删改查jdbc+jsp+servlet实现对数据库的增删改查
实现完全的对jdbc对象的封装,只需调用则可对数据库进行CRUD操作
java使用jdbc连接mysql数据库,实现增删改查等功能
一个servlet + JDBC 写的一个新闻发布系统,附带Oracle 数据库,前台用户对新闻的点击查看,后台管理新闻,对新闻的增删改查,附带最基本的数据库分页,Myeclipse9.0 + Tomcat6.0 直接可以用
JDBC连接数据库及增删查改基本步骤,仅供Java新手参考
1:本系统为servlet,jdbc,oracle实现的数据库增删改查处理; 功能包含有分页查询,jquery日历控件; 简单的登陆处理页面; 数据库存数据时,密码采用MD5 32位小写加密保存 注:ie浏览器下能够正常显示样式,...
java通过jdbc连接数据库,并进行的增删改查的操作
jsp+jdbc实现的一个增删改查的操作, 希望对大家有用!
jdbc操作oracle数据库(增删改查).docx
jdbc封装(实现对实体的增删改查[分页]),辅助学习Hibernate 包含三个文件夹,分别是: code-access实现 是用access实现的,本意是access方便,就一个文件,方便部署。但access有好多不支持,就写成这样.主要是可参考Dao...