Java连接Mysql数据库

在使用Java连接Mysql数据库之前我们得先下载一个Mysql JDBC驱动程序,为了防止大家迷路,我把链接放下面了

【免费】MysqlJDBC驱动程序资源-CSDN文库

下载完了之后,我们就需要导入Mysql JDBC驱动程序啦~

1.首先我们先创建一个Java文件,比如这里我取的就是Mysql-Connect-Java,然后在项目中创建一个目录,比如这里我取的就是 lib (名字可以随便取,但是不要带有中文/特殊字符)

 2.把下载好的 jar 包拷贝到 lib 目录中,这里的拷贝可以直接右键选择jar包复制,然后到Java程序里面选择 lib 这个包右键粘贴,也可以直接在文件夹中进行拷贝,比如我们点击下方的jar包选择复制,然后进入到 lib 文件夹中选择粘贴

3.右键刚才的 lib 目录,点击add as library (目的是告诉idea,这个 lib 目录是一个“库”目录)

4.添加完“库”之后,idea就能自动分析出jar包里面有什么了

OK,以上就是我们的所有准备工作了,下面进入正是的代码环节


创建数据源

1.首先我们得先创建一个数据源对象,这个描述了数据从哪里来,数据库服务器所在的位置

DataSource dataSource = new MysqlDataSource();

这个DataSource是Java标准库,JDBC自带的接口,而后面的MysqlDataSource是来源于刚才导入的 .jar 包

2.给这个对象设置必要的属性

1)数据库服务器在哪里

((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java112?CharacterEncoding=utf8&useSSL=false");

下面是对这一长串的代码解释:首先

        ① jdbc:mysql这个的意思是使用JDBC API来连接Mysql数据库,如果要连接其他的数据库,就把mysql换成你要连接的那个数据库的名字

        ②127.0.0.1这是一个本机地址,应该你的mysql服务器和Java代码都是在同一个电脑上的,所以可以这样写,如果是在不同主机上,那么就再写别的地址

        ③3306这个一个端口号,用来区分一个主机上的应用程序的,mysql默认端口号就是3306

        ④java112这是我的一个数据库名字

        ⑤CharacterEncoding这个是指定字符编码为 utf8 ,也可以写成utf-8,两者相同

        ⑥useSSL=false这个是关闭加密

2)访问服务器的账户是啥

((MysqlDataSource) dataSource).setUser("root");

在数据库里面root默认为最高权限的用户,也就是超级管理员 ,当然这个也可以根据你自己的需求来写

3)访问服务器的密码是啥

((MysqlDataSource) dataSource).setPassword("123456");

这个密码就是当初装数据库时候设置的密码

进行到这一步只是完成了针对数据源对象进行初始化,并没有真正和数据库服务器进行任何网络通信,要想完成这一步请往下看

建立网络连接

Connection connection = dataSource.getConnection();

我们输入这一串代码,但是这里面有两个细节需要注意:

1.在输入dataSource.getConnection会报红线,这时候不要慌,把光标移动到报红线的地方,按住Alt+Enter,此时我们可以点击第一个抛出异常也可以选择第二个try-catch一下

2.我们在选择Connection的时候会出现两种,上面一种是JDBC API定义的一个接口,它代表数据库的连接,下面一种是MySQL特定的JDBC驱动程序中提供的一个类,但是在这里必须使用上面那一种,否则会出现问题

 这是以上全部代码

        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("123456");

        //和数据库服务建立网络连接
        Connection connection = dataSource.getConnection();

到这一步就可以先运行一下,如果正常连接成功是不会报任何错误的,如果哪一步出现问题,那么报错信息也会给出具体提示的

构造sql语句并执行

首先我们可以看到原表的数据是这样的:

下面这段代码演示了通过java代码将数据写入MySQL数据库

String sql = "insert into user values(6,2077,'原神5区')";
PreparedStatement statement = connection.prepareStatement(sql);
int n = statement.executeUpdate();
System.out.println("执行语句:"+n+"条");
  1. PreparedStatement提供了预编译SQL语句的能力
  2. connection: 这是到数据库的连接对象
  3. prepareStatement(sql): 这是一个方法调用,作用是使用当前的数据库连接connection创建一个PreparedStatement对象。参数sql是一个包含占位符的SQL语句字符串

执行完上述语句可以看见数据表中的数据从5条变成了6条

executeUpdate()只针对DDL语句,执行后会返回一个整数,表示受影响的行数。

  • 对于INSERT语句,返回值表示插入了多少行数据。
  • 对于UPDATE语句,返回值表示有多少行数据被更新。
  • 对于DELETE语句,返回值表示有多少行数据被删除。

对于查询语句我们需要使用另一种,也就是executeQuery()

String sql = "select * from user";
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();
while(resultSet.next()){
     System.out.print(resultSet.getInt("id")+" ");
     System.out.print(resultSet.getInt("amount")+" ");
     System.out.println(resultSet.getString("accout"));
}

 但是上述写法可能会引起“sql注入攻击”,那么我们应该怎样改进呢?可以使用 ?来占位置,后续再替换掉,代码如下

        Scanner scanner = new Scanner(System.in);
        int id = scanner.nextInt();
        scanner.nextLine();//读取换行符
        int amount = scanner.nextInt();
        scanner.nextLine();//读取换行符
        String accout = scanner.nextLine();
        String sql = "insert into user values(?,?,?)";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setInt(2,amount);
        statement.setString(3,accout);
        int n = statement.executeUpdate();

讲到这里已经可以简单正确的使用 java 代码来操作数据库了,后续还有其他升级版的操作请多关注

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值