sql>mysql_0">JDBC连接sql>mysql数据库
第一节 了解并使用JDBC
文章目录
一、JDBC是什么?
概念:Java DataBase Connectivity ,Java 数据库连接,是使用Java语言来进行操作数据库
二、使用步骤
1.导入驱动包
我使用的数据库是Mysql,用的是sql>mysql-connector-java-5.1.37-bin.jar包。可根据自身使用情况到相应数据库官网下载。
导入步骤:
1.复制sql>mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
2.右键–>Add As Library
2.注册驱动
Class.forName("com.sql>mysql.jdbc.Driver");
3.获取数据库连接对象
conn = DriverManager.getConnection
("jdbc:sql>mysql://localhost:3306/db","root","root");
一、DriverManager:驱动管理对象
功能:
-
注册驱动:告诉程序该使用哪一个数据库驱动jar
static void registerDriver(Driver driver) :注册与给定的驱动程序 DriverManager 。 -
获取数据库连接:
方法:static Connection getConnection(String url, String user, String password)
参数:
* url:指定连接的路径
语法:jdbc:sql>mysql://ip地址(域名):端口号/数据库名称
例子:jdbc:sql>mysql://localhost:3306/db3
细节:如果连接的是本机sql>mysql服务器,并且sql>mysql服务默认端口是3306,则url可以简写为:jdbc:sql>mysql:///数据库名称
* user:用户名
* password:密码
二、Connection:数据库连接对象
功能:
sql_79">4.定义sql语句
String sql = "update user set username= '张三' where id = 1";
sql_Statement_85">5.获取执行sql的对象 Statement
Statement stmt = conn.createStatement();
sql_91">6.执行sql
int count = stmt.executeUpdate(sql);
sql_95">一、Statement:执行sql的对象
- boolean execute(String sql) :可以执行任意的sql
- int executeUpdate(String sql) :执行DML(insert、update、delete)语句、DDL(create,alter、drop)语句
返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功 返回值>0的则执行成功,反之,则失败。 - ResultSet executeQuery(String sql) :执行DQL(select)语句
sqlsql_102">二、PreparedStatement:执行sql的对象,防止sql注入
-
SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题。
输入用户随便,输入密码:a’ or ‘a’ = 'a
sql:select * from user where username = ‘fhdsjkf’ and password = ‘a’ or ‘a’ = ‘a’ -
解决sql注入问题:使用PreparedStatement对象来解决
-
预编译的SQL:参数使用?作为占位符
-
使用PreparedStatement可以防止sql注入,同时效率更高。
7.处理结果
System.out.println(count);
8.释放资源
stmt.close();
conn.close();
三、添加案例
public static void main(String[] args) {
Statement stmt = null;
Connection conn = null;
try {
//1. 注册驱动
Class.forName("com.sql>mysql.jdbc.Driver");
//2. 定义sql
String sql = "insert into account values(4,'王五',3000)";
//3.获取Connection对象
try {
conn = DriverManager.getConnection("jdbc:sql>mysql://localhost:3306/db", "root", "root");
} catch (SQLException e) {
e.printStackTrace();
}
//4.获取执行sql的对象 Statement
stmt = conn.createStatement();
//5.执行sql
int count = stmt.executeUpdate(sql);//影响的行数
//6.处理结果
System.out.println(count);
if(count > 0){
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
//7. 释放资源
//避免空指针异常
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
控制台结果
数据库已经成功添加
总结
以上就是JDBC与数据库的原生态连接步骤,但是大家有没有发现一个问题,就是连接过多的话,代码冗余量过多,有很多重复的操作,所以下次将会使用黑科技来减少代码量,简化我们的开发。有问题可以下方评论,我看到后会进行解答。一起加油!