JDBC-01

33 篇文章 0 订阅
3 篇文章 0 订阅
  1.  JPA:JavaEE的规范,Java persistence api: Java的持久化API. Hibernate实现了该规范
  2. JDBC隶属于JavaSE的范畴,Java6开始JDBC4.0有一个新特性-无需加载注册驱动.javaWeb 不会自动 加载驱动
  3. 1. MySQL的驱动包 :mysql-connector-java-5.1.x-bin.jar,  2.build path,告诉项目去哪里去找字节码文件.

    1 加载注册驱动
        Class.forName(“com.mysql.jdbc.Driver”);  1 : 把驱动类加载到 JVM
          2 : 类加载到虚拟机就会执行静态代码块
          3 : 在静态代码块里就创建驱动对象并注册
       2 获取连接对象
    static Connection = DriverManager.getConnection(String url, String user, String password) 
         url                 : 连接数据库url:   jdbc:mysql://localhost:3306/jdbcdemo
        如果连接的是本地的数据库而且端口是3306 可以省略ip 和端口:jdbc:mysql:///jdbcdemo
         user              : 连接数据库用户名
         password    : 连接数据的密码

    验证已经获取连接:可以在MySQL控制台,使用命令:show processlist; 查看MySQL运行进程.

  4. Connection API
    Statement createStatement()   : 创建语句对象,用于发送sql 语句
    prepareStatement(sql);  预编译语句对象,
    参数 带有占位符的sql 语句
    UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?
    close();

  5. Statement API: 语句对象,可以向数据库发送SQL语句,可以执行SQL

    int executeUpdate(String sql)   : 可执行 DML DDL 操作
                                  DML :  返回受影响的行
                                  DDL : 返回0
    ResultSet executeQuery(String sql)  : 发送SQL语句,同时返回一个结果集对象
    close();

  6. ResultSet API : 执行查询操作后返回的结果集,ResuleSet 就是包装了结果集

     boolean next() :调用next 判断是否还有下一行数据,有则光标下移一行,没有则光标不移动.返回true 表示可移动,false 表示不可移动

    Xxx : 代表类型String,Long,Date
    columnIndex : 代表哪一个索引列
    Xxx getXxx(int columnIndex) : 获取当前行的某个索引位置的列的值
    Xxx getXxx(String columnName); 获取当前行的某一个列名对应的列的值

    close();关闭资源

  7. PreparedStatement Api : 预编译语句对象
    parameterIndex:代表第几个?  Xxx 代表类型
    setXxx(int parameterIndex, Xxx xxx)

  8. 在 Java 使用 1 作为开始索引的就只有JDBC 和JPA

  9. DAO(Data Access Object)是一个数据访问接口,

  10. 连接数据库的四要素 : 驱动名称/url/账户名/密码

  11. public class JDBCUtil {
    
    	private static Properties p=new Properties();
    	private static Connection conn;
    	private static PreparedStatement inPsm;
    	private static PreparedStatement selPsm;
    	private static PreparedStatement selAllPsm;
    	private static String inSql= "insert into student (name,score,salary) values(?,?,?);" ;
    	private static String selSql= "select * from student where id=?;" ;
    	private static String selAllSql= "select * from student;" ;
    	
    	
    	static {
    		try {
    			InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");
    			p.load(inputStream);
    			Class.forName(p.getProperty("driverClassName"));
    			conn = DriverManager.getConnection(p.getProperty("url"),p.getProperty("username"),p.getProperty("password"));
    			inPsm = conn.prepareStatement(inSql);
    			selPsm = conn.prepareStatement(selSql);
    			selAllPsm = conn.prepareStatement(selAllSql);
    		} catch ( Exception e) {
    			e.printStackTrace();
    		}
    	}
    	public static Connection getConn() {
    		return conn;
    	}
    	public static PreparedStatement getInPsm() {
    		return inPsm;
    	}
    	public static PreparedStatement getSelPsm() {
    		return selPsm;
    	}
    	public static PreparedStatement getSelAllPsm() {
    		return selAllPsm;
    	}
    	
    	public static void close(Connection conn,PreparedStatement psm,ResultSet res) throws SQLException{
    		if (conn!=null) {
    			conn.close();
    		}
    		if (res!=null) {
    			res.close();
    		}
    		if (psm!=null) {
    			psm.close();
    		}
    	}
    }

     

     

     

     

     

     

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值