专题——Java数据库程序设计
程序员文章站
2022-07-13 16:11:05
...
Java数据库程序设计
一.关系型数据库系统
1.数据库系统的结构
2.关系型数据库系统
在关系型数据库系统中,一行是一个元组,一列表示一个属性
二.SQL
1.首先在命令行中进入MySQL文件所在的bin目录
2.使用root权限登录数据库
2.查看有哪些数据库,其中MySql和Test是必有的,MySql用于存储服务器信息和其他用户信息的表格;用于创建用户,授予权限,撤销用户,为管理员而创建;Test数据库用于存储数据或创建新的数据库。
3.创建用户名为“Bob”,密码为“123” 的用户
4.赋予权限
5.授予从任意IP访问的特权
6.授予从特定IP远程访问的特权
7.使用Bob用户登录
其他常见MySql命令:
exit;//退出
net stop mysql;//停止mysql服务
net start mtsql;//开启mysql服务
source script.sql;//运行sql脚本文件
\c //退出当前命令,重新输入
show grants;//查看权限
三.JDBC
1.JDBC是访问关系型数据库的API,提供访问和操纵数据库的接口。
2.Java开发数据库应用需要用到的四个接口:
Driver//加载一个合适的驱动
Connection//连接到数据库
Statement//创建和运行SQL语句
ResultSet//处理结果
四.访问数据库的典型步骤
【扩展】将mysql jar包添加至EclipseIDE中,可以访问将jar包导入eclipse
1.加载合适的驱动
本人使用的数据库是mySql,所以加载MySql数据库驱动
public static void main(String[] args) {
try {
//第一步:加载合适的驱动
Class.forName("com.mysql.jdbc.Driver");
//下面打印语句测试驱动是否加载成功,可选择性添加
System.out.println("驱动加载成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
2.创建连接
//第二步:建立连接
Connection connection=DriverManager.getConnection("jdbc:mysql://192.168.0.103/javabook","Bob","123");
//Javabook数据库是登录Bob用户新创建的
【扩展】
数据库 | URL模式 |
---|---|
Access | jdbc:odbc:dataSource |
MySql | jdbc:mysql://hostname/dbname |
Oracle | jdbc:oracle:thin:@hostname:port#:oracleDBSID |
3.创建SQL语句
不带参数:Statement接口
//第三步:创建SQL语句
Statement statement=connection.createStatement();
带参数或不带参数都可以使用:PreparedStatement接口
PreparedStatement ps=connection.prepareStatement("select firstName,lastName from student where ssn=?");
【注意】使用PreparedStatement接口必须要写好SQL语句,?(问号)代表占位符,通过setter修改器传值
ps.setString(1,"444111110");//1代表传给第几个参数,后面的代表传的内容
用于执行SQL的存储过程:CallableStatement接口
CallableStatement cs=connection.prepareCall("{call samplePrepare (?,?,?)}");///三个?代表转义语句;samplrPrepare是已经创建好的存储过程
执行语句:Result Set接口
ResultSet rs=ps.executeQuery();//执行查询语句
ResultSet rs2=ps.executeUpdate();//执行更新语句
处理结果
方法:当前初始位置是null,通过next方法移动
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2));//分别是firstName和lastName
}
最终运行结果
五.获取元数据
- DatabaseMetaData接口:获取数据库范围的信息
DatabaseMetaData dmd=connection.getMetaData();
结果:
不止可以获取这两个信息,只要是数据库范围内的信息都可以
- ResultSetMetaData接口:获取结果集元数据
ResultSetMetaData rsmd=rs.getMetaData();
for(int i=1;i<=rsmd.getColumnCount();i++){
System.out.printf("%-10s\t",rsmd.getColumnName(i));
}
结果:
【补充】
- Java6不需要显式加载驱动
- split方法分割“.”时需要转义
加油!