数据库操作的学习(一)

前提准备

在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);

结果
在这里插入图片描述

加驱动包,提供eclipse和数据库的桥梁
可参考 用JDBC连接SQL Server2017数据库
注:
连接其他数据库

连接其他数据库

使用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();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值