Day8 Java学习日记

Day8 2019.11.8

聚合函数

  • AVG (DISTINCT|ALL|n)
  • COUNT (DISTINCT|ALL|expr|*)
  • MAX (DISTINCT|ALL|expr)
  • MIN (DISTINCT|ALL|expr)
  • SUM (DISTINCT|ALL|n)

groupBy

  • selcet后只能放 group by 后的 分组列或者聚合函数

语法格式

SELECT	column, group_function
FROM	table
[WHERE 	  condition]
[GROUP BY	group_by_expression]
[HAVING	 group_condition]
[ORDER BY	column];

JDBC

JDBC工作原理

  • JDBC API 供程序员调用的类和接口被包装在java.sql中如

        DriverManager类
        Connection接口
        Statement接口
        ResultSet接口
    
  • DriverManager(作用:载入不同的JDBC驱动)

  • JDBC驱动(作用:负责连接各种不同的数据库)

连接数据库

  • JDBC中通过提供DriverManager类和Connection对象实现数据库的连接。
  • 使用TYPE 4与数据库连接

注释

DriverManager :依据数据库的不同,管理JDBC驱动
Connection :负责连接数据库并担任传送数据的任务  
Statement :由 Connection 产生、负责执行SQL语句
ResultSet:负责保存Statement执行后所产生的查询结果

DriverManager

  • DriverManager 类是JDBC 的管理层,作用于用户和驱动程序之间。
  • 它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。
  • 该类负责加载、注册JDBC驱动程序,管理应用程序和已注册的驱动程序的连接。

StateMent

  • Statement接口用于执行不带参数的简单SQL语句,用来向数据库提交SQL语句交返回SQL语句的执行结果。

  • 创建一个Statement接口的一般形式如下:

    Connectioncon=DriverManager.getConnection(URL,“user”,“password”);
    con=DriverManager.getConnection(URL,“user”,“password”)

执行语句

  • 创建了Statement接口的实例后,可调用其中的方法执行SQL语句,JDBC中提供了三种执行方法:
    • execute()、executeQuery()和executeUpdate()。
  • executeUpdate():执行insert update 和 delete语句
  • executeQuery(): 执行select语句。它的返回值是执行SQL语句后产生的一个ResultSet接口的实例(结果集)
  • execute():一般是在用户不知道执行SQL语句后会产生什么结果或可能有多种类型的结果产生时才会使用。execute()的执行结果包括如下两种情况:
    • 1.包含多个ResultSet(结果集);
      1. 多条记录被影响;

ResultSet接口

  • ResultSet 对象包含了Statement和PreparedStatement的executeQuery方法中SELECT查询的结果集,即符合指定SQL 语句中条件的所有行。

ResultSet 提供检索不同类型字段的方法,常用的有:

  • getString(int index)、getString(String columnName):获得在数据库里是 varchar、char 等类型的数据对象。
  • getFloat(int index)、getFloat(String columnName):获得在数据库里是 Float 类型的数据对象。
  • getDate(int index)、getDate(String columnName):获得在数据库里是 Date 类型的数据。
  • getBoolean(int index)、getBoolean(String columnName):获得在数据库里是 Boolean 类型的数据。
  • getObject(int index)、getObject(String columnName):获取在数据库里任意类型的数据。

ResultSet 还提供了对结果集进行滚动的方法:

  • next():移动到下一行 结果集一般是一个表,其中有查询所返回的列标题及相应的值。
  • Previous():移动到前一行
  • absolute(int row):移动到指定行
  • beforeFirst():移动 resultSet 的最前面。
  • afterLast() :移动到 resultSet 的最后面。
  • 使用后依次关闭对象及连接:ResultSet → Statement → Connection

执行代码

public class TestJdbc {

	public static void main(String[] args) {
		// 1.准备好数据库的连接字符串
		String url = "jdbc:oracle:thin:@192.168.1.126:1521:xe";
		String driClass = "oracle.jdbc.OracleDriver";
		String userName = "fdl";
		String userPwd = "fdl";
		// 2.在创建的项目里添加驱动类
		Connection conn = null;
		try {
			// 3.将加驱动类加载到内存中
			Class.forName(driClass);
			// 4.w使用驱动管理类来管理,可以通过驱动管理类来得到连接对像
			conn = DriverManager.getConnection(url, userName, userPwd);
			// 5,使用连接对像,得到处理器
			Statement stat = conn.createStatement();
			// 6 使用处理器,来发送sql语句
			// stat.executeUpdate(sql) insert update delete 用这个,返加一个int影响的行数
			// stat.executeQuery(sql) select语句,返回一个结果集
			String insertSql="insert into student(stuNo,stuName,stuBirthday,stuAddress,stuSex) values(SNO.NEXTVAL,'bbb','6-11月-19','巢湖','女')";
			//String insertSql = "delete student where stuname='bbb'";

			int i = stat.executeUpdate(insertSql);
			if (i > 0) {
				System.out.println("insert ok");
			} else {

				System.out.println("insert ng");
			}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (conn != null) {

				try {
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block

					e.printStackTrace();
				}
			}
		}

	}

}

你可能感兴趣的