java web数据库操作(1)

java web数据库操作(1)

这是一篇java web数据库操作的基础笔记,数据库为MySQL,使用用途为方便复习。

MySQL数据库软件

安装
卸载
MySQL安装目录my.ini文件,复制 datadir=“C:/ProgramData/MySQL Server 5.5/Data/”,当卸载MySQL后,删除C:/ProgramData(隐藏)目录下MySQL文件夹。
配置
(1)MySQL服务的启动,可在电脑右键——打开属性——打开服务——启动MySQL。
(2)cmd——services.msc 打开服务窗口
(3)使用管理员打开cmd
net start mysql:启动mysql服务
net stop mysql:关闭mysql服务

JDBC

概念
Java DataBase Connectivity Java 数据库连接
本质
其实是官方公司(SUN)定义的一套操作所有关系型数据库的规则(接口),由各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口编程(JDBC),真正执行的代码是驱动jar包里的实现类。

详解各个对象

1.DriverManager:驱动管理对象
(1)驱动注册:告诉程序使用哪一个数据库驱动
static void registerDriver(Driver driver) 注册给定的驱动程序DriverManager
写代码时最好使用:Class.forName(“com.mysql.jdbc.Driver”);
通过查看源码发现,在com.mysql.jdbc.Driver中有静态代码块,所以可以直接使用。
静态代码块

static {
		try {
			java. sql .DriverManager . registerDriver(new Driver());
		} catch (SQLException E) {
			throw new Runt imeException("Can't register driver!");
		}
}

(2)获取数据库连接
static Connection getConnection(String url)
static Connection getConnection(String url, Properties info)
info - 作为连接参数的任意字符串标记/值对的列表;通常至少应该包括 “user” 和 “password” 属性 。
static Connection getConnection(String url, String user, String password)
参数:
url:指定连接路径
jdbc:mysql://ip地址(域名):端口号/数据库名称
例如:jdbc:mysql://localhost:3306/db3
如果连接的是本机mysql服务器,并且mysql服务器默认端口号为3306,则url可简写为jdbc:mysql:///数据库名称

2.Connection:数据库连接对象
(1)获取执行sql对象
创建一个 Statement 对象来将 SQL 语句发送到数据库。
Statement createStatement()
创建向数据库发送预编译 SQL 语句的 PrepareStatement 对象。
PreparedStatement prepareStatement(String sql)
(2)管理事务
开启事物:setAutoCommit(boolean autoCommit) 参数为false开启事物
提交事物:commit()
回滚事物:rollback()
3.Statement:执行sql对象
执行sql
boolean execute(String sql)
执行给定的任意 SQL 语句,该语句可能返回多个结果。
int executeUpdate(String sql)
执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句
返回数据库中信息改变行数
ResultSet executeQuery(String sql)
执行SELECT语句,该语句返回单个 ResultSet 结果集对象。

4.PrepareStatement:执行sql对象
推荐使用
拥有Statement接口中方法。
使用PreparedStatement接口发送的SQL语句,可以带有参数(使用占位符“?”表示或代替这些参数),然后使用setXXX()方法对其进行赋值。
使用PreparedStatement接口,不仅可以提高SQL语句的执行效率,而且还可避免SQL语句的注入式攻击。
注入式攻击:SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
提高效率:Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。

5.ResultSet :结果集对象
采用的类似于表格的方式,封装了查询的结果集
用指向表格数据行的游标cursor,最初游标在第一行之前,调用next() 方法,可使游标指向具体的数据行;
进而调用getXXX()方法获取该行各个字段的值。
在这里插入图片描述

JDBC访问数据库流程

(1)加载或注册数据库驱动
(2)连接数据库——建立连接(获得connection对象)
(3)创建数据库操作对象——Statement对象
(4)执行sql语句
(5)获得并处理结果(ResultSet对象)
(6)释放资源

Statement stmt = null;//将对象放到这里,避免在try块里的stmt无法资源释放,try和catch不在同一作用域
Connection conn = null;
	try{
		//1.加载和注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		//2.获取Connection对象
		 conn = DriverManager.getConnection("jdbc:mysql://IP地址(域名):端口号/数据库名称", user, password);
		//3.获取sql对象Statement
		String sql = "这里写数据库语言 ";
	    stmt =  conn.createStatement();
		//4.执行sql
		int i = stmt.executeUpdate(sql);
		//5.处理结果
		System.out.println(i);
		if(i > 0){
			System.out.println("操作成功!");
		}else{
			System.out.println("操作失败!");
		}
	}catch(ClassNotFoundException e){
		e.printStackTrace();
	}catch(SQLException e){
		e.printStackTrace();
	}finally{
		//6.释放资源
		if(stmt!=null){
		 try{
			 stmt.close();
		 }catch(SQLException e){
				e.printStackTrace();
			}
		}
		if(conn!=null){
			 try{
				 conn.close();
			 }catch(SQLException e){
					e.printStackTrace();
				}
			}
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值