11.1 MySQL数据库管理系统
MySQL数据库管理系统,简称MySQL,是世界上最流行的开源数据库管理系统
11.2启动MySQL数据库服务器
具体内容如下图所示
11.3 MySQL客户端管理工具
MySQL客户端管理工具:专门让客户端在MySQL服务器上建立数据库的软件
可以下载图形界面(GUI)的MySQL管理工具,并使用该工具在MySQL服务器上进行创建数据库、在数据库中创建表等操作
启动navicat for MySQL:
1.建立连接(如图所示)
2.建立数据库(如图所示)
3.创建表(如图所示)
11.4 JDBC
API:使Java编写的程序不依赖于具体的数据库,而提供专门用于操作数据库的,即JDBC(Java DataBase Connectivity)
JDBC操作不同的数据库仅仅是连接方式上的差异而已,使用JDBC的应用程序一旦和数据库建立连接,就可以使用JDBC提供的API操作数据库(如下图所示)
程序经常使用JDBC进行如下的操作:
1.与一个数据库建立连接
2.向数据库发送SQL语句
3.处理数据库返回的结果
11.5连接数据库
MySQL数据库服务器启动后,应用程序为了能和数据库交互信息,必须首先和MySQL数据库服务器上的数据库建立连接。
目前在开发中常用的连接数据库的方式是加载JDBC-数据库驱动(连接器)(用java语言编写的数据库驱动操作JDBC-数据库驱动),即JDBC调用本地的JDBC-数据库驱动和相应的数据库建立连接,使用JDBC驱动数据库(如下图所示)
Java运行环境将JDBC-数据库驱动转换为DBMS(数据库管理系统)所使用的专用协议来实现和特定的DBNS交互信息
1.加载JDBC-MySQL数据库驱动
应用程序负责加载JDBC-MySQL数据库驱动,代码如下:
try { Class.forName(“com.mysql.jdbc.Driver”);
}
Catch(Exception e){}
MySQL数据库驱动被封装在Driver类中,该类的包名是com.mysql.jdbc,该类不是Java运行环境类库中的类,所以需要放置在jre的扩展中
2.连接数据库(如下图所示)
3.注意汉字问题
如果数据库的表中的记录有汉字,那么在建立连接时需要额外多传递一个参数characterEncoding,并取值gb2313或utf-8
代码如下:
String uri =“jdbc:mysql://localhost/students?useSSL=true&characterEncoding=utf-8”;
Con=DriverManager.getConnection(uri.“root”,“”);//连接代码
11.6 查询操作
与一个数据库建立连接
向已连接的数据库发送SQL语句
处理SQL语句返回的结果
查询用的SQL语句:select
select * from 表【子语句】
查询操作的具体步骤如下:
1.得到SQL查询语句对象(代码):
try { Statement sql =con.createStatement();}
catch(SQLException e){}
2.处理查询结果:有了SQL语句对象后,这个对象就可以调用相应的方法实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象中。SQL查询语句对数据库的查询操作将返回一个ResultSet对象,ResultSet对象是按“列”(字段)组织的数据行构成,如:Result rs = sql.executeQuery(“SELECT * FROM student”);结果集rs的列数是4列
具体内容如下图所示
3.关闭连接(具体内容如下图所示)
1.顺序查询:指ResultSet对象一次只能看到一个数据行,使用next()方法移到下一个数据行,next()方法最初的查询位置,即游标位置,位于第一行的前面。next()方法向下(向后、数据行号大的方向)移动游标,移动成功返回true。否则返回false
2.控制游标:为了得到一个可滚蛋的结果集,需使用下述方法获得一个Statement对象:Statement stmt =con.createStatement(int type,int concurrency);
3.条件与排序(具体内容如图所示)
11.7 更新、添加与删除操作
Statement对象调用方法:
Public int executeUpdate(String sqlStatement); 通过参数sqlStatement指定的方式实现对数据库表中记录的更新、添加与删除操作
1.更新:update 表 set 字段 = 新值 where<条件子句>
2.添加:insert into 表(字段列表) values(对应的具体记录)或 insert into 表 values (对应的具体记录)
3.删除:delete from 表名 where<条件子句>
注:当返回结果集后,没有立即输出结果集的记录,而接着执行了更新语句,那么结果集就不输出记录了,要想输出记录就必须重新返回结果集
11.8使用预处理语句
1.预处理语句优点(具体内容如下图所示)
2.使用通配符?(英文的问号)(具体内容如下图所示)
11.9 通用查询
编写一个类,只要用户将数据库名、SQL语句传递给该类对象,那么该对象就用一个二维数组返回查询的记录
结果集ResultSet对象rs调用getMetaData()方法返回一个ResultSetMetaData对象(结果集的元数据对象):ResultSetMetaData metaData = rs.getMetaData();
metaData调用getColumnCount()方法就可以返回结果集rs中的列的数目:int columnCount = metaData.getColumnCount();
metaData调用getColumnName(int i)方法就可以返回结果集rs中的第i列的名字:String columnName - metaData.getColumnName(i);
11.10 事务
事务处理是保证数据库中数据完整性与一致性的重要机制
1.事务及处理:由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行
2.JDBC事务处理步骤
(1)用setAutoCommit()方法关闭自动提交模式:con.setAutoCommit(false);
(2)用commit()方法处理事务:con.commit();
(3)用rollback()方法处理事务失败:con.rollback()
11.11 连接SQL Server数据库
代码如下图所示
11.12 连接Derby数据库
1.Java平台提供了一个数据库管理系统:Derby数据库管理系统(大约2.6MB),或简称Derby数据库
2.JDK安装目录下找到一个名字是db的子目录,在该目录下的lib子目录中derby.jar、derbynet.jar、derbyclient.jar(连接Derby数据库所需要的类)复制到java运行环境的扩展中,即将这些jar文件存放在JDK安装目录的\jre\lib\ext文件夹中
3.Derby数据库管理系统使得应用程序内嵌数据库成为现实
加载Derby数据库驱动程序代码:Class.forName(“org.apache.derby.jdbc.EmbeddedDriver”);
连接(create取值是true)代码:Connection con = DriverManager.getConnection(“jdbc:derby:students;create=true”);