JDBC
java database connectivity:可以为多种关系型数据库DBMS 提供统一的 访问
提供的接口:
connection statement prepaestatement resultset
jdbc drivemanagemer:管理不同的数据库驱动
jdbc四部曲:
1.导入第三方jar包,加载驱动类
oracle —> ojdbc-x.jr
MySQL-------> mysql-connector-java-x.jar
sql sever ------sqljdbc.jar
2.建立连接
DriverManager(https://blog.youkuaiyun.com/qq_44890539/article/details/106101616)
Connection
3.增删改查
statement
4.返回结果集
报错
高版本的驱动报错(MySQL依赖及MySQL驱动包高于在使用的MySQL数据库版本)
java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
换成低版本就行啦
中文乱码??
更换数据库
只需要 替换:驱动,具体驱动类,连接字符串,用户名,密码
ResultSet 默认指向第0行(没有数据的那一行)
一次只能读取一条数据
result.next
解决JDBC向数据库插入数据乱码
private static final String URL = "jdbc:mysql://localhost:3306/user?characterEncoding=utf-8";
sql 语句:
排序
SELECT id,username FROM `user`
ORDER BY 1(id) DESC
模糊查询
select username,temp from user where username like '%s%'"
statement操作数据库:
增删改:executeUpdate
查:executeQuery
有sql注入的风险:aaa ‘’ or 1 = 1 –
PreparedStatement操作数据库:
占位符,预编译提高性能
CallableStatement:调用存储过程和存储函数
connection.prepareCall( 存储过程 /存储函数 )
处理CLOB【text】/BLOB类型
a .存储路径 通过IO处理拿数据
CLOB:大文本数据 (小说->数据)
BLOB:二进制文件
max_allowed_packet
查看MySQL 安装目录
select @@basedir as basePath from dual
com.mysql.jdbc.PacketTooBigException:
show VARIABLES like ‘%max_allowed_packet%’;
找不到my.ini!!!