Class.forName(数据库驱动名);
java 中的数据库驱动名:“com.mysql.jdbc.Driver”
JavaSE项目中可以省略 , JavaWeb项目必须编写此步骤
使用DriverManager类的getConnection()静态方法来获取数据库的连接对象,语法如下:
Conncetion conn = DriverManager.getConnection(String url,String username,String password);
url --> 数据库连接的字符串,字符串的连接格式: 主协议:子协议://ip地址:端口号/数据库名称 //
username --> 数据库的账号
password --> 数据库的密码
想对数据库进行操作,就必须执行sql语句。在java中,想给数据库传输sql语句,就要使用Statement对象进行封装,才能发送给数据库。但Statement也不是直接调用的,而是通过Connection对象所提供的方法来创建各种Statement对象的。语法如下:
具体的实现方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql);
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}");
获取Statement对象后,就要开始执行sql语句了。这时候就可以调用对象的不同方法来对数据库进行操作。如果其中产生了结果集,就要对结果集进行封装,在java中,是使用ResultSet类来对结果集进行封装的,且会返回一个结果集对象。
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute。
ResultSet rs = stmt.executeQuery("sql语句") ;
int rows = stmt.executeUpdate("sql语句") ;
boolean flag = stmt.execute(String sql) ;
结果集一般分为两种情况:
int row = state.executeUpdate();
while(rs.next()){
String name1 = rs.getString("name") ;
String name2 = rs.getString(1) ;
}
上面这两行代码执行的目的都是一样的,获取数据库中的name字符的数据,但获取name2的速度比name1的速度快。(列是从左往右的,从1开始的)
public interface IDao {
public void createMethod();
}
在里面设计增、删、改、查的抽象方法
public class DaoJdbc implements IDao {
@Override
public void createMethod() {
System.out.println("DaoJdbc::create()");
}
}
单例DAO工厂的特点:
public class DaoFactory {
//1.私有化构造函数,不能让外界进行对象创建
private DaoFactory(){
}
//2.这个类必须自动向整个系统提供这个实例对象
public static DaoFactory getDaoFactory(){
return daoFactory;
}
//3.单例类必须执行创建
private static DaoFactory daoFactory;
public IDao getDao(){
//项目总根据需求对这里的内容进行修改,决定工厂提供什么样的产品
return new DaoJdbc();
}
}
ublic class Service {
public void create(){
DaoFactory daoFactory = DaoFactory.getDaoFactory();
IDao iDao = daoFactory.getDao();
iDao.create();
}
public class Demo1 {
public static void main(String[] args) {
Service ser = new Service();
ser.createMethod();
}
}