JAVA基础25-JDBC

一、JDBC的经典用法:

 

     .

二、JDBC图解

 

三、JDBC使用步骤:

  1. 导入相应数据库的jar包。
  2. 加载驱动类 class.forName("类名")              // Class.forName("com.mysql.jdbc.Driver")
  3. 给出数据库的URL                              //URL格式:       jdbc:子协议:数据源              子协议
  4. 通过 java.sql.DriverManager的getConnection可获得Connection对象,以建立连接
  5. 创建preparestatement对象
  6. 执行查询(resultSet)或者更新
  7. 结束处理
  8. 关闭连接

    最基本的连接例子:

        1.导入驱动包

         

         2.其他步骤如下

              

package com.demo.demo.demo1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Demo1 {
	// 3.给出URL
	private String dirver = "com.mysql.jdbc.Driver";
	private String url = "JDBC:mysql://localhost:3306/world";
	private String user = "root";
	private String passwd = "1234";

	public static void main(String[] args) throws SQLException {
		Connection con = null;
		PreparedStatement prep = null;
		ResultSet re = null;
		try {
			Demo1 d = new Demo1();
			// 2.加载驱动类
			Class.forName(d.dirver);
			// 4建立连接 返回值是:java.sql.connection
			con = DriverManager.getConnection(d.url, d.user, d.passwd);
			// 5.创建prepareStatement
			prep = con.prepareStatement("select * from city");
			// 6-1.查询
			re = prep.executeQuery();
			System.out.println(re.first());
			System.out.println("id=" + re.getInt(1) + "-----------------------------");
			System.out.println("Name=" + re.getString(2));
			/**
             在Statement对象中可以执行如下的操作:
                A.查询操作:executeQuery(SQL语句) 
             B.维护操作:executeUpdate(SQL语句)
                C.批处理操作:executeBath()

            */
		} catch (Exception e) {
			// ..............
		} finally {
			// 8.关闭连接
			// 后开先关;若无关闭,则只能等到线程死亡才关闭
			if (null != re) {
				re.close();
			}
			if (null != prep) {
				prep.close();
			}
			if (null != con) {
				con.close();
			}
			
			

		}

	}

}

四:对于JDBC数据库详解

4-1 执行查询或更新

在Statement对象中可以执行如下的操作:
      A.查询操作:executeQuery(SQL语句) 

      B.维护操作:executeUpdate(SQL语句)
      C.批处理操作:executeBath()

4-2 ResultSet【单一结果集】

ResultSet默认一开始是在beforeFirst ;我们可以通过next();向下移动;

next()返回boolean;若true,为存在。

确认了行后,确认列;列范围为1-N;

通过使用getXXX系列方法,获得相应的数据类型的数据。

          getXXX()有两种参数:一种是通过索引,一种是通过列名。

ResultSet获取大数据

-

4-3: ResultSetMetaDate【元数据】

         元数据:描述数据的数据

         获取方式:

                     prepareStatement 的getMetaDate()方法

         常用方法

4-4:多结果集

  当有多个结果集的时候;

           1、使用prepareStatement的execute方法执行sql语句;返回true为有结果集,false为没有;

           2、获取结果集:prepareStatement的getResultSet方法

           3、  重复调用getMoreResult方法。  true有结果集,false无结果集

 

五、批处理

jdbc批量操作三种方式

相关方法 addBatch()  executeBatch()这两个方法

         批量执行预定义模式的sql

        

         批量执行预定义、还有静态的

                  

         执行静态的sql

        

六、关于statement和prepareStatement

prepareStatement好处如下

  1. 防止SQL攻击
  2. 提高可读性,可维护性
  3. 提高效率

七、JDBC事务

     概念:将一组语句构成一个事务。当所有语句顺利执行后,事务可以被提交

     作用:事务确保数据库的完整性

     步骤:

         A:默认情况下,数据库都是自动提交模式(一句话提交一次);通过connection的setAutoCommit(false)关闭自动提交。  

         B:通过prepareStatement多次调用执行后,

         C:如果执行命令没有错误,则调用comit方法

         D: 如果错误,调用rollback()方法回滚

    模板:

try{

con.setAutoCommit(false);
con.commit;
}
catch{
   con.rollback()
}
finally{

  //关闭连接
}

 

八。数据库类型和JAVA类型对应

 数据库类型 Java类型
 INTEGER int or java.lang.Integer
 BIGINT long or java.lang.Long
 SMALLINT short or java.lang.Short
 FLOAT float or java.lang.Float
 DOUBLE double or java.lang.Double
 NUMERIC java.math.BigDecimal
 CHAR java.lang.String
 VARCHAR java.lang.String
 TINYINT byte or java.lang.Byte
 BIT boolean or java.lang.Boolean
 DATE java.util.Date or java.sql.Date
 TIME java.util.Date or java.sql.Time
 TIMESTAMP java.util.Date or java.sql.Timestamp
 TIMESTAMP java.util.Calendar
 DATE java.util.Calendar
 VARBINARY (or BLOB) byte[]
 CLOB java.lang.String
 VARBINARY (or BLOB) any Java class that implements java.io.Serializable
 CLOB java.sql.Clob
 BLOB java.sql.Blob

注意:

        domain对象中,是不能出现java.sql下的东西【低耦合】

       java.util.Date转java.sql.Date

package com.demo.demo.demo1;


public class City {

	public static void main(String[] args) {
		java.util.Date d=new java.util.Date();
		Long l=d.getTime();
		java.sql.Date dd=new java.sql.Date(l);
		
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值