原生JDBC快速入门
步骤:(提前定义好sql语句、url、user、password、driver)一般写properties配置文件中【除sql外】
1.导入驱动jar包
2.注册驱动
Class.forName("com.mysql.jdbc.Driver");
3.获取Connection数据库连接对象
Connection conn=DriverManager.getConnection(url,user,password)
4.获取执行sql语句的对象Statement或者PreparedStatement
Statement stmt=conn.createStatement();//Statement专用
PreparedStatement pstmt=conn.preparedStatement(sql);//PreparedStatement专用
5.给占位符赋值【preparedstatement特有的一步】
pstmt.setXXX(1,"arg) //char类型也用setString()
6.执行sql,接收返回结果
resultSet = pstmt.executeQuery();//查询
int count=pstmt.executeUpdate();//用于执行增删改
7.处理结果
while(resultset.next()){
//遍历结果集,并进行操作
}
8.释放资源(逆序释放)
finally {
if (resultSet!=null){
resultSet.close();
}
if (pstmt!=null) {
pstmt.close();
}
if (connection!=null) {
connection.close();
}
}
注意:一般都会使用Preparedstatement来完成数据库的增删改查
优点:
1.可以防止SQL注入
2.效率更高
========================= 以下是方法、对象的细节=========================================
获取Connection数据库连接对象
获取数据库连接对象: DriverManager调用getConnection()方法获得Connection对象
static Connection getConnection(String url,String username,String password)
参数url: jdbc:mysql://ip地址(域名):端口号/数据库名称
细节:如果连接的是本机的MySQL服务器,并且服务器的默认端口是3306,可以将url简写为
jdbc:myslq:///数据库名称
connection对象功能1:获取能执行sql语句的 Statement、PreparedStatement对象
方式1: Statement createStatement()
方式2: PreparedStatement preparedStatement(sql)
细节:此时PreparedStatement对象已经将sql预编译给DBMS,而Statement对象后面调用执行方法才会传入sql。
给占位符传值:preparedstatement.setString(1,“值”);
setXXX方法:XXX表示哪种类型的数据
参数1:第几个占位符?从1开始算(按参数排序,不按类型),所有的占位符都需要指定值
参数2:占位符的值
connection对象功能2:管理事务
开启事务:connection.setAutoCommit(boolen autoCommit);参数设置为false,即开启事务。MySQL默认true,Oracle默认是false
提交事务:connection.commit();//查询不用提交
回滚事务:rollback()
Statement、PreparedStatement对象执行sql
Statement用于执行静态sql,并返回其生成的结果集对象
缺点:有SQL注入
PreparedStatement执行预编译sql,避免sql注入,预编译提高了效率
使用步骤:
1.preparedstatement.setXXX(arg1,arg2)//preparedstatement特有的。比statement多出的一步
2.执行sql【preparedStarement的执行方法不传入sql参数,预编译的时候传入过了】
1)int executeupdate(String sql)//用于执行DML(增删改),返回值:影响的行数。可以用来判断MDL是否执行成功 返回值>0,则执行成功,反之失败
2)ResultSet executeQuery(String sql):执行DQL(select),返回值是一个结果集
3)execute(String sql)//前两个特点
结果集ResultSet
while(rest.next()){
//rs.getString(1);//同set方法,是参数的序号。
System.out.println(rs.getString("password"));
}
Ps:目前一般都使用封装好的框架SSM、springboot对数据库进行操作