增删改等操作的封装
一、准备工作数据库。
首先我们先在mysql中建立一个first的数据库,并建立一张表。建表语句如下:
create table `tb_user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
二、实现JDBC。
新建一个项目jdbc1,建立一个com.dao.UserDao类,并建立一个addUser方法。下面我们通过jdbc连接数据,并执行一条插入语句,在数据库中插入一个新的用户。根据上一节讲的步骤一步一步完成。
前提条件:导入相关的驱动包。
因为我们现在连接的是mysql数据库,所以我们应该改mysql的驱动包,导入项目中。mysql的jdbc驱动包,大家可以上网查询并下载。这方面的资料非常多。
步骤一、加载JDBC驱动程序:
在连接数据库之前,首先要通过反射技术加载想要连接的数据库的驱动到Java虚拟机,这通过java.lang.Class类的forName静态方法forName(String className)实现。
public void addUser(String userName) {
try {
// 1、通过反射加载驱动。
Class.forName("com.mysql.jdbc.Driver");
//继续操作...
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
步骤二、创建数据库的连接
要操作数据库,首先必须要先连接数据库,使用java.sql.DriverManager获得一个Connection连接对象,该对象就代表一个数据库的连接。
使用DriverManager的getConnectin(String url,String username,String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。用户名和密码直接写上就可以了,关键是连接数据库的路径,不同数据库的写法是不一样的。
连接URL定义了连接数据库时的协议、子协议、数据源标识。
书写形式:协议:子协议:数据源标识
例如MySql的连接URL如下:
jdbc:mysql://localhost:3306/myDB?useUnicode=true&characterEncoding=utf8。表示连接的数据库是myDB,地址是localhost,端口是3306,一般连接mysql还需要指定编码,这是使用的是utf8编码。
接着上面的代码实现,获得一个Connection对象,实现代码如下:
// 1、通过反射加载驱动。
Class.forName("com.mysql.jdbc.Driver");
// 2、通过驱动管理类建立一个连接 不同数据url写法是不同 ip端口 数据
Connection connection = DriverManager.getConnection(
"jdbc:mysql://192.168.11.144/first?useUnicode=true&characterEncoding=utf8","root", "123456");
步骤三、创建一个Statement。
要执行SQL语句,还必须获得java.sql.Statement实例,Statement实例分为以下3种类型:
这里我们先使用Statement对接即可。实现代码如下:
//3、通过Connect建立Statement
Statement statement=connection.createStatement();
步骤四、执行SQL语句
要执行sql语句一般需要使用两个方法即可:executeQuery 、executeUpdate。其中executeQuery用户查询操作,而增删改等更新数据库的操作都是使用executeUpdate,这里我们要插入一行数据,所以先使用executeUpdate就可以了。有关查询操作,我们下一节再讲解。
(1)ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。
(2)int executeUpdate(String sqlString):用于执行insert、update或delete语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等,其返回值是返回影响行数。一般执行失败影响行数就为0。
这里我们需要插入一条数据,实现代码如下:
//先定义sql语句。
String sql="insert into tb_user(user_name) values('"+userName+"')";
//受影响的行数
int result= statement.executeUpdate(sql);
if(result>0){
System.out.println("执行成功");
}else{
System.out.println("执行失败");
}
步骤五、释放连接资源
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:
//5、释放资源。
statement.close();
connection.close();
三、实现删除和修改操作
有了上面的操作基础,事实上有关数据库的更新操作都是这个步骤的,仅仅是执行的sql语句不同而已,增删改操作我们可以很快实现了,完成参考代码如下:
public void addUser(String userName) {
try {
// 1、通过反射加载驱动。
Class.forName("com.mysql.jdbc.Driver");
// 2、通过驱动管理类建立一个连接 不同数据url写法是不同 ip端口 数据
Connection connection = DriverManager.getConnection(
"jdbc:mysql://192.168.11.144/first?useUnicode=true&characterEncoding=utf8","root", "123456");
// 3、通过Connect建立Statement
Statement statement = connection.createStatement();
// 4、通过Statement执行sql语句
String sql = "insert into tb_user(user_name) values('" + userName + "')";
// 受影响的行数
int result = statement.executeUpdate(sql);
if (result > 0) {
System.out.println("执行成功");
} else {
System.out.println("执行失败");
}
// 5、释放资源。
statement.close();
connection.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 根据用户id删除数据
public void delUser(int uid) {
try {
// 1、通过反射加载驱动。
Class.forName("com.mysql.jdbc.Driver");
// 2、通过驱动管理类建立一个连接 不同数据url写法是不同 ip端口 数据
Connection connection = DriverManager.getConnection(
"jdbc:mysql://192.168.11.144/first?useUnicode=true&characterEncoding=utf8","root", "123456");
// 3、通过Connect建立Statement
Statement statement = connection.createStatement();
// 4、通过Statement执行sql语句
String sql = "delete from tb_user where user_id=" + uid;
// 受影响的行数
int result = statement.executeUpdate(sql);
if (result > 0) {
System.out.println("执行成功");
} else {
System.out.println("执行失败");
}
// 5、释放资源。
statement.close();
connection.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 根据用户id,更新用户名称
public void updateUser(int uid, String userName) {
try {
// 1、通过反射加载驱动。
Class.forName("com.mysql.jdbc.Driver");
// 2、通过驱动管理类建立一个连接 不同数据url写法是不同 ip端口 数据
Connection connection = DriverManager.getConnection(
"jdbc:mysql://192.168.11.144/first?useUnicode=true&characterEncoding=utf8","root", "123456");
// 3、通过Connect建立Statement
Statement statement = connection.createStatement();
// 4、通过Statement执行sql语句
String sql = "update tb_user set user_name='" + userName
+ "' where user_id=" + uid;
// 受影响的行数
int result = statement.executeUpdate(sql);
if (result > 0) {
System.out.println("执行成功");
} else {
System.out.println("执行失败");
}
// 5、释放资源。
statement.close();
connection.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
后台 私我 01 面肥拿走,,,记得 转发或评论 一下 就好,谢谢支持95后的码农
留言与评论(共有 0 条评论) |