c 网站模板,淘宝客程序wordpress,seo的站外优化流程,上海方正大厦网站建设上篇结束了Mysql数据库的基本使用#xff0c;本篇开始对JDBC进行学习总结#xff0c;开始先简单介绍jdbc的基本使用#xff0c;以及简单的练习#xff1b;后续会继续更新#xff01;以下代码可以直接复制到idea中运行#xff0c;便于理解和练习。
JDBC的概念 JDBC#…上篇结束了Mysql数据库的基本使用本篇开始对JDBC进行学习总结开始先简单介绍jdbc的基本使用以及简单的练习后续会继续更新以下代码可以直接复制到idea中运行便于理解和练习。
JDBC的概念 JDBCJava DataBase Connectivityjava数据库连接是一种用于执行SQL语句的Java API可以为多种关系型数据库提供统一访问它是由一组用Java语言编写的类和接口组成的。 JDBC的作用可以通过java代码操作数据库JDBC的本质 JDBC实质上是java官方提供的一套规范(接口)。用于帮助开发人员快速实现不同关系型数据库的连接
代码一
import com.mysql.cj.jdbc.Driver;
import java.sql.*;
//TODO 简单练习感受jdbc
public class data_test1 {public static void main(String[] args) throws SQLException {//1.注册驱动DriverManager.registerDriver(new Driver());//2.获取连接桥梁// java程序需要和数据库建立连接 需要调用getConnection方法并且需要填入连接数据库的基本信息数据库ip地址数据库端口号账号密码连接数据库的名称//该方法第一个参数url第二个参数:username;第三个参数passwordConnection connection DriverManager.getConnection(jdbc:mysql://127.0.0.1:3306/atguigudb, root, dir99);//3.创建statement创建将sql语句传入mysql的载具Statement statementconnection.createStatement();//4.发送sql语句并且获取返回结果String sqlselect *from jobs;;ResultSet resultSet statement.executeQuery(sql);//5.将结果进行解析//先看看有没有下一行数据有就可以获取while(resultSet.next()){String job_id resultSet.getString(job_id);String job_title resultSet.getString(job_title);int min_salary resultSet.getInt(min_salary);int max_salary resultSet.getInt(max_salary);System.out.println(job_id job_title min_salary max_salary);}//6.关闭资源resultSet.close();statement.close();connection.close();}
}
代码二
import java.sql.*;
import java.util.Scanner;
//TODO 正式使用jdbc
//查询对应的id号的数据,statement载具有点缺陷
public class data_test2 {public static void main(String[] args) throws Exception {//获取用户输入信息Scanner scannew Scanner(System.in);System.out.println(请输入房间id号);String department_idscan.next();System.out.println(请输入位置id号);String location_idscan.next();//1.注册驱动//注意像之前那个方法有问题其实是注册了两次驱动1.DriverManager.registerDriver()方法本身会注册一次// 2.Driver.static{DriverManager.registerDriver()}在这个静态代码块中还会执行一次因为只要类加载静态代码块就会执行//解决只想注册一次驱动只触发静态代码块//对于触发静态代码块类加载机制类的加载时刻会触发静态代码块有三个步骤加载class文件-jvm虚拟机的class对象连接验证检查文件类型-准备静态变量默认值-解析触发静态代码块初始化静态属性赋真实值//触发类加载new关键字调用静态方法调用静态属性反射子类触发父类所以从这几种中选择一个最合适的//此处可以选择反射来注册驱动Class.forName(com.mysql.jdbc.Driver);//此处参数是字符串后面可以在配置文件中写入然后解析到这里更改比较方便灵活//2.获取连接//对于getConnection方法来说有三种不同的方法重载// 传入的参数为1.数据库软件所在的主机ip地址2.数据库所在的主机的端口号3.连接的具体库4.连接的账号5.连接的密码//一、对于三个参数的getConnection方法 1.String url:数据库所在的信息具体语法jdbc:mysql://127.0.0.1:3306/atguigudb;// 2.String user数据库的账号root;3.String password:数据库的密码dir99;//二、对于两个参数的方法1.Connection connection DriverManager.getConnection(jdbc:mysql://127.0.0.1:3306/atguigudb,root,dir99);//3.创建发送sql语句的statement对象statement可以发送sql语句到数据库并且可以获得返回结果Statement statement connection.createStatement();//4.发送sql语句(编写sql语句发送sql语句/*对于sql分类DDL容器创建修改删除DML插入、修改、删除DQL查询DCL权限控制TPL事务控制语言有两种方法返回值为int类型的适合非DQL1.情况一执行DML 返回影响的行数例如插入两条数据返回值为2删除三条数据返回值为32.情况二非DML 返回值为0返回值为ResultSet类型的结果封装对象适合DQL也就是说查询调用Query非查询调用Update*///下面这种sql语句拼接方式复杂而且容易注入攻击因此一般不用这种方法data_test3中进行了更改用新的方式String sqlselect * from departments where department_iddepartment_idand location_idlocation_id;;//int类型的方法int i statement.executeUpdate(sql);//对于查询语句用返回值为ResultSet类型的ResultSet resultSetstatement.executeQuery(sql);//5.查询结果集解析//获取数据解析移动游标获取数据行然后获取对应行的列数据即可采用next方法移动光标返回类型为boolean类型// 初始指向第一行数据之前然后next一下指向下一行如果有数据返回true没有返回false//移动光标之后需要获取对应行的列数据resultSet.get类型(String columLable|int columIndex);columLable列名如果有别名可以写别名columIndex列的下角坐标从左向右从1开始注意和数组区别while(resultSet.next()){int depart_idresultSet.getInt(1);String nameresultSet.getString(department_name);int manager_idresultSet.getInt(manager_id);int locat_idresultSet.getInt(4);System.out.println(depart_id--name--manager_id--locat_id);}resultSet.close();statement.close();connection.close();}
}