建设部网站有项目经理资质查询系统快速建站工具
jdbc
接口是一个类的父类
java连接数据库, java操作数据库, 把java作为数据库的一个客户端
JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。
当然还有第三方公司专门为某一数据库提供驱动,这样的驱动往往不是开源免费的!
jdbc开发步骤:
编码, 使用jdk提供的jdbc接口(位于java.sql包),
核心接口: java.sql.Connection(连接)
java.sql.Statement(发送sql,通知数据库执行)
java.sql.ResultSet(获取查询sql的结果集)
一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象
jdbc开发步骤:
添加第三方数据库驱动ja
编码, 使用jdk提供的jdbc接口(位于java.sql包),
核心接口: java.sql.Connection(连接)
java.sql.Statement(发送sql,通知数据库执行)
java.sql.ResultSet(获取查询sql的结果集)
一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象
jdbc的编码
>1. 项目中导入数据库驱动jar
>2. 加载启动类
>3. 得到连接对象Connection
>4. 创建Statement对象
>5. 编写sql语句(java普通字符串)
>6. 执行之
>7. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
>8. 关闭资源
实现查询
import java.sql.*;
import java.util.Date;
import java.util.Scanner;/*** 查询*/
public class Demo2 {public static void main(String[] args) {/*1. 加载启动类2. 得到连接对象Connection3. 创建Statement对象4. 编写sql语句(java普通字符串)5. 执行之6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据7. 关闭资源*/Connection conn = null;Statement statement = null;ResultSet resultSet = null;try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";conn = DriverManager.getConnection(url, "root", "123");statement = conn.createStatement();System.out.print("请输入要查询员工姓名:");Scanner input = new Scanner(System.in);String name = input.next();String sql = "select * from emp where ename = '"+name+"'";System.out.println(sql);resultSet = statement.executeQuery(sql);//循环获取数据, 一行一行的获取//一定要先调用next()while(resultSet.next()){//获取这一行的单元格中数据// getXxx(int 列序号): 从1开始 Xxx: 数据类型int empNo = resultSet.getInt(1);String ename = resultSet.getString(2);String job = resultSet.getString(3);int mgr = resultSet.getInt(4);Date hiredate = resultSet.getDate(5);double sal = resultSet.getDouble(6);double comm = resultSet.getDouble(7);int deptNo = resultSet.getInt(8);System.out.println(empNo+","+ename+","+job+","+mgr+","+hiredate+","+sal+","+comm+","+deptNo);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException throwables) {throwables.printStackTrace();}finally{//倒序关try {if(resultSet != null) {resultSet.close();}if(statement != null) {statement.close();}if(conn != null) {conn.close();}} catch (SQLException throwables) {throwables.printStackTrace();}}}
}
使用jdbc操纵数据库
import javax.xml.bind.SchemaOutputResolver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;/*** 使用jdbc操作数据*/
public class Demo1 {public static void main(String[] args) {/*1. 加载启动类2. 得到连接对象Connection3. 创建Statement对象4. 编写sql语句(java普通字符串)5. 执行之6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据7. 关闭资源*/Connection conn = null;Statement statement = null;try {//1. 加载启动类 反射 核心: ClassClass.forName("com.mysql.jdbc.Driver");//2.得到连接对象Connection 通过DriverManager的静态方法getConnection()String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";conn = DriverManager.getConnection(url, "root", "123");//System.out.println(conn);System.out.println("与数据库服务器连接上了...");//3.创建Statement对象statement = conn.createStatement();//4.编写sql语句//System.out.print("请输入要删除的员工编号:");System.out.print("请输入要加薪的员工编号:");Scanner input = new Scanner(System.in);int empno = input.nextInt();//删除//String sql ="delete from emp where empno = "+empno;String sql ="update emp set sal = sal + 500 where empno = "+empno;//5.执行之 执行增删改sql: Statement的 int executeUpdate(sql)// 执行查询sql: Statement的 ResultSet executeQuery(sql)int rs = statement.executeUpdate(sql);if(rs > 0){//System.out.println("删除成功");System.out.println("加薪成功");}} catch (ClassNotFoundException e) {//Driver类找不到//出现原因: 1. 驱动jar没到导入 2. 驱动类包.类名字符串写错e.printStackTrace();} catch (SQLException throwables) {//出现原因: 1. 数据库服务没有开启 2. url写错 3. 用户名错误 4.密码错误throwables.printStackTrace();}finally{//倒序关try {if(statement != null) {statement.close();}if(conn != null) {conn.close();}} catch (SQLException throwables) {throwables.printStackTrace();}}}}