JavaWeb学习笔记01:JDBC

JDBC

1、概述

基本概念:

  • JDBC,Java DataBase Connectivity,Java数据库连接
  • Java语言 操作数据库
  • 定义了操作所有关系型数据库的规则(接口)

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

2、JDBC 编程步骤

1、导入驱动jar包

mysql-connector-java-5.1.37-bin.jar

2、注册驱动(将这个类的字节码文件加载进内存)

Class.forName("com.mysql.jdbc.Driver")

3、获取数据库连接对象Connection

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc_demo","root","123456")

4、定义sql

String sql = "";

5、获取执行sql语句的对象Statement

Statement stat = conn.createStatement();

6、执行sql,接收返回结果
7、处理结果
8、释放资源

3、JDBC各个接口和类 详解

1、DriverManager

驱动管理对象 类
功能:
1、注册驱动:

static void registerDriver(Driver driver);

写代码使用语句:

Class.forName("com.mysql.jdbc.Driver");

查看源码发现这个类存在静态代码块

static{
	try{
		java.sql.DriverManager.registerDriver(new Driver());
	} catch(SQLException e){
		throw new RuntimeException("can't register driver!");
	}
}

mysql5之后的驱动jar包可以省略注册驱动的步骤 -> 可以自动帮你去注册驱动

2、Connection 数据库连接对象

获取数据库连接

Static Connection getConnection(String url, String user, String password)

参数说明:

  • url:指定连接的路径
jdbc:mysql://ip地址(域名):端口号/数据库名称

如果连接的是本机mysql服务器,并且mysql服务默认服务器端口为3306,url可以简写为

jdbc:mysql:///数据库名称

功能:

  1. 获取执行sql的对象
Statement createStatement()
PreparedStatement prepareStatement(String sql)
  1. 管理事务
  • 开启事务
void setAutoCommit(boolean autoCommit)

调用该方法设置参数false,即开启事务

  • 管理事务
commit()
  • 回滚事务
rollback()
  • 注意:若想事务处理功能开启,需要在navicate设计表中选择引擎InnoDB

3、Statement 执行SQL的对象 (interface)

静态SQL:在执行SQL语句之前所有字符串都是拼接好的。静态SQL容易产生注入的问题

功能:执行SQL

boolean execute(String sql)	// 不常用,了解即可
int executeUpdate(String sql)
/*
	执行DML语句(insert/update/delete)
	执行DDL语句(create/alter/drop) -> 一般不经常执行
	返回值:int 影响的行数,可以通过影响的行数判断DML语句是否执行成功
*/
ResultSet executeQuery(String sql)	// 执行DQL语句(select)

4、ResultSet 结果集对象,封装查询的结果

boolean next()	// 游标向下移动一行,判断当前行是否是最后一行末尾,如果是,则返回false,否则,返回true
getXxx()	// 获取数据(某一列),Xxx代表数据类型

5、PreparedStatement 执行SQL的对象(功能比Statement更强大)

SQL注入问题:在拼接sql时,有一些sql的特殊关键字与字符串的拼接,会造成安全问题
解决SQL注入问题:使用PreparedStatement对象来解决
预编译SQL:参数使用?占位符

步骤:
…(省略1234步骤)
5、获取执行sql语句的对象PreparedStatement

Connection.prepareStatment(String sql)

?赋值的方法:
setXxx(参数1, 参数2…)
参数1为?的位置编号,从1开始;参数2为?的值

后期都会使用PreparedStatement来完成增删改查的所有操作:

  • 可以防止SQL注入
  • 效率更高
4、JDBCUtils 抽取JDBC工具类

目的:简化书写
编写类分析:

1、注册驱动也要抽取
2、抽取一个方法获取连接对象
需求:不想传递参数(麻烦),还得保证工具类的通用性
-> 配置文件jdbc.properties
包含url,user,password参数信息
3、抽取一个方法释放资源

实现:功能:获取连接,释放资源

public class JDBCUtils{...}

成员变量:

private static String url;
private static String user;
private static String pwd;
private static String Driver;

静态代码块:

static{
	// 读取资源文件,获取值
	try{
		// 1.创建Properties集合类
		Properties pro = new Properties();
		// 获取src路径下的文件的方式 -> ClassLoader 类加载器
		ClassLoader classLoader = JDBCUtils.class.getClassLoader();
		URL resource = classLoader.getResource("jdbc.properties");
		// 2.加载文件
		pro.load(new FileReader(path);
		// 3.获取数据,赋值
		url = pro.getProperty("url")
		user = pro.getProperty("user")
		pwd = pro.getProperty("password")
		// 4.注册驱动
		Driver = pro.getProperty("driver");
		Class.forName(Driver);
	} catch(IOException e) {
		e.printStackTrace();
	} catch(ClassNotFoundException e) {
		e.printStackTrace();
	}
}

获取连接 getConnection():

public static Connection getConnection(){
	Connection conn = null;
	try{
		conn = DriverManager.getConnection(url, user, pwd);
	} catch (SQLException throwables) {
		throwables.printStackTrace();
	}  
	return conn;
}

释放资源 close(Connection conn, Statement stat):

public static void close(Connection conn, Statement stat){
	if(stat != null){
		try{
			stat.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	if(conn != null){
		try{
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

重写释放资源 close(Connection conn, Statement stat, ResultSet res):

public static void close(Connection conn, Statement stat){
	if(res != null){
		try{
			res.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	close(conn,stat);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值