数据库基础入门(三)——通过JDBC对数据库进行增删改查操作
来源:互联网 发布:淘宝怎么搜百度云资源 编辑:程序博客网 时间:2024/05/08 22:31
何谓JDBC?
JDK提供了一组API,让我们可以在java程序中连结到网络上的数据库,并执行SQL语句返回执行结果,这组API的应用我们通常称作JDBC技术;相关的API都在包java.sql.*下面。
Connection对象,则是由java.sql.DriverManager类的静态方法getConnection(…)得到,一但应用程序中得取一个Connection对象,即应用程序与数据库创建立了连结。随后,我们就可以通过操作Connection对象,创建Statement对象以执行sql语句,或从执行结果返回的ResultSet中取得查询结果。
以下是具体代码实现:
1) 连接到数据库:
public Connection getConnection() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQ LException{
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;
}
需要注意的是以下的几个参数,URL:本地用户localhost 端口号默认为3306 后面是数据库的名字。Username默认为root,密码就是你设置的数据库密码。Driver:MySQL的驱动名应写成(驱动jar包要从www.mysql.org上下载):com.mysql.jdbc.Driver
如果是没有加载驱动将会出现找不到驱动的错误:
2)使用预编译sql
数据库处理SQL语句时,需要一个预编译过程,数据库可以把一些格式固定的SQL编译后,存入在其内存池中,再次执行时即直接使用,不再执行预编译过程,这样可以有效提高数据库操作效率;我们可以通过预编译对象实现,如下代码示例:
//添加用户
//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型值,代表语句所影响的行数,如下代码示例:
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(
"删除数据失败!"
);
}
一下是针对具体项目的完整代码:
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对数据库进行增删改查操作
- 数据库基础入门(三)——通过JDBC对数据库进行增删改查操作
- JDBC连接数据库,对数据库进行增删查改操作
- JDBC笔记—对数据库进行增删查改
- JDBC 3 通过PreparedStatement 对数据库进行增删改查
- JDBC 通过PreparedStatement 对数据库进行增删改查
- JDBC 通过PreparedStatement 对数据库进行增删改查
- JDBC 对数据库进行增删改查
- 对数据库进行增删改查操作
- Hibernate(三)对数据库进行增删改查
- JDBC——用JDBC连接MySQL数据库并进行简单的增删改查操作
- JDBC——用JDBC连接MySQL数据库并进行简单的增删改查操作
- mysql 入门基础(3)—数据库增删查改
- java学习笔记——使用JDBC,对数据库进行增删改查(方案一)【推荐】
- java学习笔记——使用JDBC,对数据库进行增删改查(方案二)
- JDBC 笔记3 通过PreparedStatement 对数据库进行增删改查
- 通过JDBC对Mysql数据库进行简单的增删改查
- JDBC 笔记3 通过PreparedStatement 对数据库进行增删改查
- 2015年10月18日
- 2015年10月19日
- 数据库基础入门(二)——具体项目实现
- 2015年10月19日
- 2015年10月19日
- 数据库基础入门(三)——通过JDBC对数据库进行增删改查操作
- warm创建docker集群:服务发现-etcd
- Uva122 Trees on the level 二叉树的数组实现
- 2015年10月20日
- 2015年10月21日
- WKWebView
- 数据库基础入门(四)— — 产品功能实现之数据库架构与用户登录注册
- 2015年10月21日
- C Primer Plus 5th 2.12.1