天天看点

数据库操作的学习(一)前提准备使用JDBC操作数据库的基本步骤

数据库操作的学习(以SQLServer为例)

  • 前提准备
  • 使用JDBC操作数据库的基本步骤
    • 加载JDBC驱动包和连接数据库
    • 数据库查询
    • 增删改
    • 批处理
    • 动态查询
    • 调用存储过程
    • 关闭驱动类

前提准备

在SQLServer中创建一个数据库(图书信息表),并创建一个表(图书信息表)
java.sql

use 图书信息表;

create table 图书信息表

(

编号 int,

书名 char(20),

作者 char(20),

单价 int,

);

insert into 图书信息表 values(‘1’,‘平凡的世界’,‘路遥’,40);

insert into 图书信息表 values(‘2’,‘红楼梦’,‘曹雪芹’,50);

insert into 图书信息表 values(‘3’,‘三国演义’,‘吴承恩’,37);

insert into 图书信息表 values(‘4’,‘水浒传’,‘施耐庵’,34);

结果

数据库操作的学习(一)前提准备使用JDBC操作数据库的基本步骤
加驱动包,提供eclipse和数据库的桥梁
可参考 用JDBC连接SQL Server2017数据库
注:
连接其他数据库
数据库操作的学习(一)前提准备使用JDBC操作数据库的基本步骤

使用JDBC操作数据库的基本步骤

数据库操作的学习(一)前提准备使用JDBC操作数据库的基本步骤

加载JDBC驱动包和连接数据库

Connection con=null;//连接流

        //数据库驱动
		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			System.out.println("数据库驱动成功!");
			
			//创建连接
			String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=图书信息表";//数据库配置信息
			String username="sa";//数据库登录账号
			String password="1234567";//数据库登录密码
			con=DriverManager.getConnection(url,username,password);
			System.out.println("已创建连接!");
           

数据库查询

代码

//创建Statement对象
			Statement stmt=con.createStatement();
			
			//给数据库发送SQL语句,返回值为ResultSet对象。查询数据executeQuery
			rs=stmt.executeQuery("select * from 图书信息表");
			
			//遍历结果集
			while(rs.next()) {//获取下一行
				int id=rs.getInt("编号");
				String name=rs.getString("书名");
				String author=rs.getString("作者");
				int price=rs.getInt(4);//获取第4列的值
				System.out.println(id+" "+name+" "+author+" "+price+" ");
			}
           

结果

数据库驱动成功!

已创建连接!

1 平凡的世界 路遥 40

2 红楼梦 曹雪芹 50

3 三国演义 吴承恩 37

4 水浒传 施耐庵 34

增删改

代码

//创建Statement对象
			Statement stmt=con.createStatement();
           //插入数据
			String sql1="insert into 图书信息表(编号,书名,作者,单价) values(5,'悲惨世界','NN',45)";
			int result1=stmt.executeUpdate(sql1);
			System.out.println("有"+result1+"行数据受影响");
			
			//修改数据
			String sql2="update 图书信息表 set 编号=4 where 作者='NN'";
			int result2=stmt.executeUpdate(sql2);
			System.out.println("有"+result2+"行数据受影响");
			
			//删除数据
			String sql3="delete from 图书信息表  where 编号=4";
			int result3=stmt.executeUpdate(sql3);
			System.out.println("有"+result3+"行数据受影响");
			
           

批处理

stmt.addBatch("insert into 图书信息表(编号,书名,作者,单价) values(5,'悲惨世界','NN',45)");
			stmt.addBatch("insert into 图书信息表(编号,书名,作者,单价) values(6,'悲惨世界','MM',45)");
			stmt.addBatch("insert into 图书信息表(编号,书名,作者,单价) values(7,'悲惨世界','JJ',45)");
			
			int results[]=stmt.executeBatch();//批处理数据
           

动态查询

解决SQL安全问题

  • PreparedStatement接口—继承——>Statement接口

代码:

//动态SQL
			String sql="select * from 图书信息表 where 编号=? and 书名 like ?";
			PreparedStatement ps=con.prepareStatement(sql);
			ps.setInt(1, 4);
			ps.setString(2, "水%");
			ResultSet rs=ps.executeQuery();
			System.out.println("编号\t书名\t作者\t单价");
			while(rs.next()) {
				System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getInt(4)+"\t");
			}
           

结果:

编号 书名 作者 单价

4 水浒传 施耐庵 34

调用存储过程

  • CallableStatement接口——extends——>PreparedStatement接口
前提准备:
在SQLServer中创建存储过程

–创建存储过程

create procedure my_procedure

as

begin

select * from 图书信息表

end

go

exec my_procedure

go

代码:

//调用存储方法
			CallableStatement cs=con.prepareCall("{call my_procedure}");
			ResultSet rs=cs.executeQuery();
			System.out.println("编号\t书名\t作者\t单价");
			while(rs.next()) {
				System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getInt(4)+"\t");
			}
           

结果:

编号 书名 作者 单价

1 平凡的世界 路遥 40

2 红楼梦 曹雪芹 50

3 三国演义 吴承恩 37

4 水浒传 施耐庵 34

5 悲惨世界 NN 45

6 悲惨世界 MM 45

7 悲惨世界 JJ 45

1 平凡的世界 路遥 40

2 红楼梦 曹雪芹 50

3 三国演义 吴承恩 37

4 水浒传 施耐庵 34

1 平凡的世界 路遥 40

2 红楼梦 曹雪芹 50

3 三国演义 吴承恩 37

4 水浒传 施耐庵 34

1 平凡的世界 路遥 40

2 红楼梦 曹雪芹 50

3 三国演义 吴承恩 37

4 水浒传 施耐庵 34

关闭驱动类

while(rs.next())
{rs.getXxx(...)
	...
}catch(....){
	...
}catch(...){
	.....
}catch(...){
	.....
}finally{
//打开顺序与关闭顺序相反
if(rs!=null){
	rs.close();
}
if(stmt!=null){
	stmt.close();
}
if(con!=null){
	con.close();
}
}
           

继续阅读