JDBC

JDBC的相关语句

1) JDBC是什么 Java DataBase Connectivity

  1. Java数据库连接: 实际上JDBC是java中和数据库交互的API(Application Program Interface:应用程序编程接口)
  2. 为什么使用JDBC: 因为Java程序员需要连接多种数据库,为了避免每一种数据库都学习一套新的API,Sun公司提供了一个JDBC接口,各个数据库厂商根据此接口写实现类(驱动),这样Java程序员只需要掌握JDBC接口中各个方法如何调用,就可以访问任何数据库

2) 执行SQL方法
execute(sql): 可以执行任意sql,但是推荐执行DDL(create drop alter truncate),方法返回值代表是否有结果集
executeUpdate(sql): 执行增删改相关的sql,方法返回值为int类型的数值,代表生效的行数
executeQuery(sql): 执行select相关sql,方法返回值ResultSet结果集对象
3) Java类型和数据库类型对比
数据库 int Java getInt()
数据库 float Java getFloat()
数据库 double Java getDouble()
数据库 varchar() Java getString()
数据库 datetime/timestamp Java getDate()
4) 连接数据库
 注册驱动 Class.forName(“”)
 Class.forName(“com.mysql.jdbc.Driver”);
 获取连接对象 Connection conn = null;
 conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/newdb3”,“root”,“root”);
 创建SQL执行对象 Statement stat = conn.createStatement()
 执行SQL语句 stat.execute(sql)
5) ResultSet获取数据的方式
 ResultSet res = stat.执行SQL的方法;
 通过字段名称获取 res.getString(字段名称)
 通过查询字段的位置获取 res.getString(字段位置)
6) Statement SQL语句和参数同时传入
 Statement stat = conn.createStatement();
 String sql = “select count() from user where username=’"+username+"’";
 ResultSet res = stat.executeQuery(sql);
7) PreparedStatement 创建预编译SQL语句,在添加语句参数
 String sql = " select count(
) from user where username=? “;
 PreparedStatement stat = conn.prepareStatement(sql);
 stat.setString(1, username);
 ResultSet res = stat.executeQuery();
8) 读取.properties配置文件*
 创建读取配置文件的对象
 Properties prop = new Properties();
 获取文件输入流
 InputStream is = 本文件名.class.getClassLoader().getResourceAsStream(”*.properties”);
 把文件流加载到位置文件对象中
 prop.load(is);
 获取配置文件中的数据 获取到的都是字符串
 String name = prop.getProperty(“name”);
9) 数据库连接池DBCP (DataBase Connection Pool)
 为什么使用 : 如果不使用连接池,每一次和数据库的交互都需要建立一次连接,交互完之后则断开连接,一万次业务交互则需要有一万次开建立连接和关闭连接,频繁开关连接浪费资源,通过数据库连接池可以将用完之后的连接进行重用,避免资源的浪费
 导入DBCP的jar包
10) 事务
 开启事务,需要关闭自动提交 conn.setAutoCommit(false);
 事务提交 conn.commit();
 事务回滚 conn.rollback();
11) 批量操作
 添加到批量操作
 Statement下 stat.addBatch(sql);
 PrepardStatement下 stat.addBatch();
 执行批量操作 stat.executeBatch();
12) 获取自增主键值
 第一种PreparedStatement
 String sql = “insert into hero values(null,?)”;
 PreparedStatement stat = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
 stat.setString(1, “admin”);
 stat.executeUpdate();
 ResultSet rs = stat.getGeneratedKeys(); 获取返回的主键值
 while(rs.next()){
 int id = rs.getInt(1);
 System.out.println(“自增主键:”+id);
 }
 第二种Statement
 String sql = “insert into hero values(null,’”+name+"’)";
 Statement stat = conn.createStatement();
 stat.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);
 ResultSet rs = stat.getGeneratedKeys(); 获取返回的主键值
 while(rs.next()){
 int id = rs.getInt(1);
 System.out.println(“自增主键:”+id);
 }

13) 获取数据库的元数据
 DatabaseMetaData dbmd = conn.getMetaData();
 数据库版本 dbmd.getDriverMajorVersion()
 数据库用户名 dbmd.getUserName()
 数据库地址 dbmd.getURL()
 数据库厂商 dbmd.getDatabaseProductName()
14) 获取表的元数据
 Statement stat = conn.createStatement();
 ResultSet res = stat.executeQuery(“select * from hero”);
 获取表的元数据 ResultSetMetaData rsmd = res.getMetaData();
 得到表字段数量 int count = rsmd.getColumnCount();
 for(int i = 1; i <= count; i++){
 获取字段名 rsmd.getColumnName(i)
 获取字段类型 rsmd.getColumnTypeName(i)
 }
15)
16)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值