JDBC
jdbc就是javadatabaseconnector
它主要有几个东西
1.注册驱动
DriverMager 这个对象可以注册驱动,一般我们使用class.forName("");
2.获取连接
得到connection对象 获得connection对象后,可以通过connection获得statment催啊ing
3.获得statement对象 ,这个对象只能操作静态的sql语句而不能操作可变的sql语句。
4.得到结果ResultSet对象
6.关闭连接
如一下代码
DriverManager.deregisterDriver(new Driver());
Connection connection = DriverManager.getConnection(“jdbc:mysql://xxxx:3306/test”,“root”,“liuyaoyaoge”);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(“select *from student”);
//有关于result取值问题,result取值的话,这个Object会重载可以通过获取第几行或者通过哪个列来获取
Student student=new Student();
while (resultSet.next()){
int id = resultSet.getInt(“id”);
student.setId(id);
}
System.out.println(student);
//关闭连接
resultSet.close();
statement.close();
connection.close();
如果仅仅使用stament的话,会有sql注入问题。所以其提供了一个对象PrepareStament对象。使用的是占位符的方式。
package cn.chuan.test;
import cn.chuan.pojo.Student;
import com.mysql.jdbc.Driver;
import java.sql.*;
public class MyConnector02 {
public static void main(String[] args) throws SQLException {
DriverManager.registerDriver(new Driver());
Connection connection = DriverManager.getConnection("jdbc:mysql://47.100.92.106/test","root","liuyaoyaoge");
//再是哦那个prepareStment,它的处处理是使用占位符,并且需要提前写好sql语句,而不是并且
PreparedStatement preparedStatement = connection.prepareStatement("select *from student where id=?");
preparedStatement.setInt(1,1);
ResultSet resultSet = preparedStatement.executeQuery();
Student student = new Student();
while (resultSet.next()){
int id = resultSet.getInt(1);
student.setId(id);
}
System.out.println(student);
}
}
PreparementStament相对于Stament而言效率也比较快,并且能够防止Sql注入。
有关于JDBC中事务的处理:
connection.setAutoCommit(false);//开启事务,在执行sql开始前
connection.commint();//提交事务,在所有sql执行完候
connection.rollback();//回滚事务,在发生异常后
当然在这个阶段还会有数据库连接池等操作,我想放到多线程的里面讲解,哪个时候又JUC等一些操作将会非常刺激。
由于上个阶段我完成了网络和jdbc基本操作,下一步我将进入mybatis和spring以及springmvc阶段,将更加刺激。。。