【JavaDay27】JDBC基础知识,安装,Java连接数据库,SQL语句的使用

将JDBC包加入到你的项目里

  • 先去官网下载JDBC,JDBC下载地址,选择如下:
    在这里插入图片描述
  • 安装完解压一下,得到一个文件,文件里面有一个tar包,在项目里建一个文件,把那个包放进去
  • 在这里插入图片描述
  • 此时应该是没有箭头的,你选中,右键,然后添加到库,应该是倒数第三个选项,你自己看一下吧,然后就ok了。

如何连接到数据库

第一种方式


public class SQLconnection01 {
    public static void main(String[] args) throws  Exception{
        //方式一,可以写在配置文件里面
        Class clazz=Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();
        String url="jdbc:mysql://localhost:3306";
        Properties properties = new Properties();
        properties.setProperty("user","root");
        properties.setProperty("password","123456");
        Connection connect = driver.connect(url, properties);
        System.out.println(connect);
        connect.close();
    }
}

第二种及第三种方式

public class SQLconnection002 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //第二种方式,这里他帮我们自动注册Driver
        Class.forName("com.mysql.cj.jdbc.Driver");
        //第三种方式,可以直接省略Class.forName("com.mysql.cj.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306";
        String user="root";
        String password="123456";
        Connection connection = DriverManager.getConnection(url, user, password);
        System.out.println(connection);
        connection.close();
    }
}

第四种方式,一定要会的!!

package com.sj.www;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
--------------通过配置文件的方法连接,有利于后续不用动代码就改相应数据--------------------
public class SQLconnection003 {
    public static void main(String[] args) throws Exception {
        //第四种,更加灵活的连接数据库,以后就用这个
        //第一步,把数据写在配置文件里sql.properties

        //第二步,创建properties对象
        Properties properties = new Properties();
        //获取配置文件地址,下面方法是获取src下的文件绝对路径,并且直接创建一个流对象
        // 此方法更加通用,然后加载配置文件。------------------重点------------
        InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("sql.properties");
        properties.load(inputStream);
        //第三步,使用get方法获取
        String driver = properties.getProperty("driver");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String url = properties.getProperty("url");
        //然后就正常写连接的语句了
        //1、获取类文件夹/这一步可以省略但是为了清晰建议加上
        Class.forName(driver);
        //2、调用DriverManager的connection(连接)方法-----------重点-----------
        Connection connection = DriverManager.getConnection(url, user, password);
        //3、下面就可以根据这个连接对象进行sql语句操作了
        System.out.println(connection);
        //4、关闭连接
        connection.close();
    }
}

properties文件的内容

url=jdbc:mysql://localhost:3306/bjpowernode
user=root
password=123456
driver=com.mysql.cj.jdbc.Driver

JAVA中执行增删改查

  • Insert语句
    ------------前面的是一样的,我是在获取connection之后写的--------------
String sql="insert into dept(deptno,dname,loc) values(50,'Booker','DALLAS')";
        //createStatement(创建语句)
        Statement statement =connection.createStatement();
        //executeUpdate更新到数据库中
        int rows = statement.executeUpdate(sql);
        System.out.println("影响行数:"+rows);
        //4、关闭连接,语句以及数据库
        statement.close();
        connection.close();
  • update语句
String updatesql="update dept set dname='图书管理员' where deptno=50;";
        Statement updatestatement = connection.createStatement();
        int updaterows = updatestatement.executeUpdate(updatesql);
        System.out.println("影响行数:"+updaterows);
        //4、关闭连接,语句以及数据库
        updatestatement.close();
        connection.close();
  • delete语句
//删除语句
        String deletesql="delete from dept where deptno=50;";
        Statement deletestatement = connection.createStatement();
        int updaterows = deletestatement.executeUpdate(deletesql);
        System.out.println("影响行数:"+updaterows);
        //4、关闭连接,语句以及数据库
        deletestatement.close();
        connection.close();
  • select语句
        //查询语句
        String selecetsql="select * from emp where SAL>1000";
        Statement selectstatement = connection.createStatement();
        //该方法返回的是一个结果集对象
        ResultSet resultSet = selectstatement.executeQuery(selecetsql);
        //处理结果集,现在我们没啥好处理的,就直接遍历输出吧
        //next判断当前光标的位置是否有值,它不会自动下移,除非你在调用一次
        if(resultSet.next()){
            //条件成立表示光标指示的地方有值
            //获取当前行的第i个值
            //注意JDBC所有地方都是以下标1开始
            //不管你是什么值,返回的类型都以string类型取出,当然你可以指定类型
            String s1=resultSet.getString(1);
            String s2=resultSet.getString(2);
            String s3=resultSet.getString(3);
            String s4=resultSet.getString(4);
            String s5=resultSet.getString(5);
            String s6=resultSet.getString(6);
            String s7=resultSet.getString(7);
            String s8=resultSet.getString(8);
            System.out.println(s1+" "+s2+" "+s3+" "+s4+" "+s5+" "+s6+" "+s7+" "+s8);
        }
        //4、关闭连接,语句以及数据库
        resultSet.close();
        selectstatement.close();
        connection.close();

改进版本,

       //查询语句
        String selecetsql="select * from emp where SAL>1000";
        Statement selectstatement = connection.createStatement();
        //该方法返回的是一个结果集对象
        ResultSet resultSet = selectstatement.executeQuery(selecetsql);
        //处理结果集,现在我们没啥好处理的,就直接遍历输出吧
        //next判断当前光标的位置是否有值,它不会自动下移,所以我用while让它一直执行,直到它变为false
        while (resultSet.next()){
            //条件成立表示光标指示的地方有值
            //获取当前行的第i个值
            //注意JDBC所有地方都是以下标1开始
            //不管你是什么值,返回的类型都以string类型取出,当然你可以指定类型

            for (int i = 1; i < 9; i++) {
                System.out.print(resultSet.getString(i)+" ");
            }
            System.out.println();
        }
        //4、关闭连接,语句以及数据库
        resultSet.close();
        selectstatement.close();
        connection.close();

select查询注意事项

  • 上面result.tostring()里面可以是列的名字。以后我们常用的是直接放列名而不是数字,不健壮。
  • 注意里面的名字是result结果集中列的名字,不一定是数据库中的列名,因为你可能查的时候,给一个列起了别名,那么你括号里就应该是别名。
注意释放时先释放result,在释放statement,最后释放connection。

巩固练习

声明:我太懒了,就把代码全部粘贴进来,各位见谅!

package com.sj.www;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class SQLconnectiontest02 {
    public static void main(String[] args) throws Exception {
        //Java中使用jdbc练习1
        //--以下皆是读取配置文件信息--
        Properties properties = new Properties();
        InputStream path = Thread.currentThread().getContextClassLoader().getResourceAsStream("sql.properties");
        properties.load(path);
        String url = properties.getProperty("url");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        //--配置文件读取,到此结束--

        //--Class.forName(driver);可以不写--
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);
        String sql="select e1.ENAME as '员工姓名',e2.ENAME as '老板姓名' from emp e1 left join emp e2 on e1.MGR=e2.EMPNO";
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        System.out.println("员工名:"+"\t"+"老板名:");
        while (resultSet.next()){
            System.out.println(resultSet.getString("员工姓名")+"\t"+resultSet.getString("老板姓名"));
        }
        //关闭
        resultSet.close();
        statement.close();
        connection.close();
    }
}


package com.sj.www;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class SQLconnectiontest03  {
    public static void main(String[] args) throws Exception {
        //读取配置文件
        Properties properties = new Properties();
        InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("sql.properties");
        properties.load(resourceAsStream);
        //getProperty中文意思:获取属性
        String sqlurl = properties.getProperty("url");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        //--至此配置文件的作用完成--
        //此处可以省略,给Java装了一个mysql驱动
        Class.forName(driver);
        //dirvermanager
        Connection connection = DriverManager.getConnection(sqlurl,user,password);
        Statement statement = connection.createStatement();
        String sql="select DEPTNO, avg(SAL)\n" +
                "from emp\n" +
                "group by DEPTNO\n" +
                "having avg(SAL) > 2500;\n";
        System.out.println("找出每个部门的平均薪资,要求显示平均薪资高于2500的");
        ResultSet resultSet = statement.executeQuery(sql);
        System.out.println("部门号"+"\t"+"平均薪资");
        while (resultSet.next()){
            System.out.println(resultSet.getString("DEPTNO")+"\t"+resultSet.getString("avg(SAL)"));
        }
        resultSet.close();
        statement.close();
        connection.close();
    }
}


package com.sj.www;

import java.io.IOException;
import java.io.InputStream;
import java.lang.invoke.VarHandle;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class SQLconnectiontest04 {
    public static void main(String[] args) throws Exception {
        //练习
        //--依旧是读取配置文件--
        Properties properties = new Properties();
        InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("sql.properties");
        properties.load(resourceAsStream);
        String sqlurl = properties.getProperty("url");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        //--以上每个字段都会用到

        Class.forName(driver);
        Connection connection = DriverManager.getConnection(sqlurl, user, password);
        Statement statement = connection.createStatement();
        String sql = "select e.ENAME as '员工', e.SAL '薪资',t.DEPTNO as'部门编号'\n" +
                "from emp e\n" +
                "         join (select e.DEPTNO, max(e.SAL) as 'maxsal' from emp e group by e.DEPTNO) t\n" +
                "              on e.DEPTNO = t.DEPTNO\n" +
                "where e.SAL = t.maxsal\n" +
                "order by e.SAL asc";
        ResultSet resultSet = statement.executeQuery(sql);
        System.out.println("员工" +
                "\t\t\t" +
                "薪资"+"\t\t"+"部门号");
        while (resultSet.next()) {
            System.out.println(resultSet.getString("员工") + "\t" + resultSet.getDouble("薪资")+"\t" +
                    resultSet.getInt("部门编号"));
        }
        resultSet.close();
        statement.close();
        connection.close();
    }
}


package com.sj.www;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class SQLconnectiontest005 {
    public static void main(String[] args) throws Exception {
        //继续练啊啊啊啊啊啊啊啊啊啊啊
        //-首先读取配置文件
        Properties properties = new Properties();
        InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("sql.properties");
        properties.load(resourceAsStream);
        String url = properties.getProperty("url");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        //--结束
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);
        Statement statement = connection.createStatement();
        String sql = "select e.ENAME as'员工姓名',e.SAL as'员工薪资',t.平均薪资 as '所在部门平均薪资'\n" +
                "from emp e join (select e2.DEPTNO as '部门编号', avg(e2.SAL) as '平均薪资' from emp e2 group by e2.DEPTNO)\n" +
                "t on e.DEPTNO=t.部门编号\n" +
                "where e.SAL>t.平均薪资";
        ResultSet resultSet = statement.executeQuery(sql);
        System.out.println("哪些人的薪水在部门的平均薪水之上?");
        while (resultSet.next()){
            System.out.println(resultSet.getString("员工姓名")+resultSet.getString("员工薪资")+" " +
                    " "+resultSet.getString("所在部门平均薪资"));
        }
        resultSet.close();
        statement.close();
        connection.close();
    }
}

package com.sj.www;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class SQLconnectiontest006 {
    public static void main(String[] args) throws Exception {
        //继续练
        //--读取配置文件--
        Properties properties = new Properties();
        InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("sql.properties");
        properties.load(resourceAsStream);
        String url = properties.getProperty("url");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        //----end---
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);
        Statement statement = connection.createStatement();
        String sql="select e.DEPTNO as '部门号', avg(s.GRADE) as '平均薪水等级'\n" +
                "from emp e\n" +
                "         left join salgrade s on e.SAL between s.LOSAL and s.HISAL\n" +
                "group by e.DEPTNO;";
        ResultSet resultSet = statement.executeQuery(sql);
        System.out.println("#取得部门中所有人的平均的薪水等级");
        while (resultSet.next()){
            System.out.println("部门:"+resultSet.getString("部门号")+"\t"+"平均薪资等级:"+resultSet.getString("平均薪水等级"));
        }
        resultSet.close();
        statement.close();
        connection.close();
    }
}

至于增删改,我就不演示了,比较简单,记住语句结构就行了
update 表名 set 要修改的列名=值 where 具体到哪一行
insert into 表名(各个列名字) values(要插入的每个列的值)
delete from 表名 where 具体的哪一行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Java SQLite3 JDBC是一种用于在Java应用程序中连接和操作SQLite3数据库的API。 SQLite是一种轻量级的嵌入式数据库引擎,适用于许多小型和中小型项目。它使用简单且易于理解的SQL语法,并将所有数据库的内容存储在单个文件中,这使得SQLite非常适合于需要在单个机器上进行本地存储和处理的应用程序。 Java提供了许多用于与各种数据库进行交互的API,其中包括SQLite3数据库。JDBCJava Database Connectivity)是Java提供的用于连接和操作各种数据库的标准API。 使用Java SQLite3 JDBC,开发人员可以轻松地在Java应用程序中实现与SQLite3数据库的连接和交互。首先,需要下载并导入SQLite JDBC驱动程序,然后在代码中使用合适的连接字符串(包括数据库文件路径)连接到SQLite3数据库。一旦连接成功,就可以执行SQL语句来执行数据库的各种操作,例如插入、查询、更新和删除数据。JDBC还提供了一些方法来处理数据库事务和处理结果集。 Java SQLite3 JDBC的优势包括:易于学习和使用,无需额外的数据库服务器,占用资源少,性能良好。它是开源和免费的,适用于各种小型和中型项目。 总之,Java SQLite3 JDBC是一个有助于在Java应用程序中连接和操作SQLite3数据库的API。它提供了简单且直观的方法来实现与SQLite3数据库的连接和交互,并且是一个流行和广泛使用的工具。 ### 回答2: Java SQLite3 JDBC 是一个用于在 Java 程序中连接和操作 SQLite3 数据库的 API。它提供了一组用于在 Java 程序中执行 SQL 查询和更新的类和接口。 Java SQLite3 JDBC 提供了一种简便的方式来连接 SQLite3 数据库。通过 JDBC 驱动程序,我们可以在 Java 程序中访问 SQLite3 数据库。我们可以执行各种 SQL 查询,如 SELECT、INSERT、UPDATE 和 DELETE,并可以获取结果集以及对数据库进行事务处理。 使用 Java SQLite3 JDBC,我们首先需要下载 SQLite3 JDBC 驱动程序,并将其添加到我们的项目中。然后,我们可以通过调用 `Class.forName("org.sqlite.JDBC")` 加载驱动程序类。接下来,我们可以使用 `DriverManager.getConnection()` 方法来连接到 SQLite3 数据库,并传递数据库的连接字符串作为参数。 一旦我们成功连接到数据库,我们可以使用 `Connection` 对象创建 `Statement` 或 `PreparedStatement` 对象,并使用它们来执行 SQL 查询。通过 `executeQuery()` 方法执行 SELECT 查询,并使用 `ResultSet` 对象来处理查询结果。对于 INSERT、UPDATE 或 DELETE 操作,我们可以使用 `executeUpdate()` 方法来执行 SQL 命令,并获取受影响的行数。 在完成数据库操作后,我们应该关闭 `ResultSet`、`Statement` 和 `Connection` 对象,以释放资源并保证数据的一致性。 总而言之,Java SQLite3 JDBC 提供了一个方便的方式来连接和操作 SQLite3 数据库。它可以在 Java 程序中执行各种 SQL 查询和更新,并提供了一组类和接口来处理数据库连接和事务处理。它使得在 Java 程序中使用 SQLite3 数据库变得简单和高效。 ### 回答3: Java sqlite3 jdbc是一种用于在Java编程语言中操作SQLite数据库的API。SQLite是一种轻量级、嵌入式的关系型数据库,它在本地文件中存储数据,无需配置额外的服务器。 通过Java sqlite3 jdbc,我们可以很方便地连接SQLite数据库,并对其进行增删改查的操作。首先,我们需要通过JDBC驱动程序连接到SQLite数据库。可以通过添加相关的JAR文件或在Maven中添加依赖项来获取相应的驱动。然后,我们可以使用jdbc连接字符串指定数据库的位置和其他相关参数。 一旦连接成功,我们可以使用java.sql包提供的接口和方法执行SQL语句,如创建表、插入数据、更新数据和查询数据等。我们可以使用PreparedStatement类来预编译SQL语句,提高执行效率。还可以使用ResultSet类来处理查询结果。 在使用Java sqlite3 jdbc时,我们需要注意以下几点:首先,要保证数据库文件的路径正确,并具有读写权限。其次,为了防止SQL注入攻击,我们应该使用参数化查询,而不是直接拼接SQL语句。另外,为了提高性能,可以使用事务来批量执行一系列SQL语句。 总的来说,Java sqlite3 jdbc为开发人员提供了一个方便、易用的工具,使他们能够轻松地在Java程序中操作SQLite数据库。通过这个API,我们可以实现对SQLite数据库的各种操作,从而满足应用程序对数据的存储和检索需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Keyle777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值