JDBC入门使用

Java连接数据库的入门操作使用

什么是JDBC?JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API。我们可以通过JDBC来连接数据库,从而达到对数据库的获取数据等操作的目的。下面以数据库MySQL为例子说明。

一、JDBC主要3个类

Connection类、Statement类、ResultSet类

 Connection类:主要用于连接数据库。
 Statement类:用Connection类连接好数据库后,就可以用Statement类执行sql语句。
 ResultSet类:Statement类执行sql语句的结果放到这个类里。

Connection类相当于一个桥,待桥建好后,Statement类走过桥到达目的地执行工作,工作完成后把结果放到ResultSet这个背包里带回来。整个工作就完成了。

二、环境准备

具有Java开发环境jkd,从maven仓库中下载mysql-connector-java包并导入到项目中去。电脑的MySQL数据库为多少版本就下载对应版本的mysql包。
下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java

三、coding

1、加载驱动器,用于连接数据库

Class.forName("com.mysql.jdbc.Driver");

2、获取Connection

String url="jdbc:mysql://localhost:3306/school";
String name ="root";
String psd = "root";
Connection connection = DriverManager.getConnection(url,name,psd);

在这里插入图片描述
3、获取Statement

Statement statement = connection.createStatement();

4、执行sql,结果放入ResultSet中

ResultSet resultSet = statement.executeQuery("sql语句");

5、获取结果(如下例子为获取查询结果)

ResultSet resultSet = statement.executeQuery("select * from student");
        while (resultSet.next()){
            System.out.print("id:"+resultSet.getObject("id"));
            System.out.print(" name:"+resultSet.getObject("name"));
            System.out.println("  age:"+resultSet.getObject("age"));
        }

6、关闭连接

resultSet.close();
statement.close();
connection.close();

四、简单例子完整代码


public class No1_JDBC {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/school";
        String name ="root";
        String psd = "root";
        Connection connection = DriverManager.getConnection(url,name,psd);
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery("select * from student");
        while (resultSet.next()){
            System.out.print("id:"+resultSet.getObject("id"));
            System.out.print(" name:"+resultSet.getObject("name"));
            System.out.println("  age:"+resultSet.getObject("age"));
        }
        resultSet.close();
        statement.close();
        connection.close();
    }
}

五、防止SQL注入

防止SQL注入最好使用PreparedStatement类代替Statement类
如:

/**************************预编译sql语句*****************/
String SqlCheck = "insert into student(`name`,age,sex) values(?,?,?)"; 

/***********************获取PreparedStatemen************/
            PreparedStatement stCheck = connection.prepareStatement(SqlCheck);
/**************************获取设置参数******************/
            stCheck.setString(1,"小肥");
            stCheck.setInt(2,21);
            stCheck.setString(3,"男");
/**************************执行*************************/
            stCheck.executeUpdate();

六、事务

public class No5_affair {
    public static void main(String[] args) throws SQLException {
        Connection connection = Utils.getConnection();
        try {
            connection.setAutoCommit(false);
            Statement statement = connection.createStatement();
            statement.executeUpdate("update student set money=money-1 where `name`='小肥'");
            int x=1/0;
            statement.executeUpdate("update student set money=money+1 where `name`='靓仔'");
            connection.commit();
        }catch (Exception e){

        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值