MySQL JDBC编程_3

举报
bug郭 发表于 2022/08/11 10:07:19 2022/08/11
【摘要】 完整案例import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;public class jdbc { ...

完整案例

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class jdbc {
    public static void main(String[] args) throws SQLException{
      //创建DataSource对象
        //相当于分配了一个任务
        //导入 javax.sql包
        DataSource dataSource = new MysqlDataSource();
        //描述数据库服务器在哪里
        // 设置数据库所在地址
        //jdbc:mysql://127.0.0.1:3306/java_2022?characterEncoding=utf8&useSSL=false
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java_2022?characterEncoding=utf8&useSSL=false");
        //((MysqlDataSource)dataSource).setUrl();
        //设置登入数据库用户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置数据库登入密码
        ((MysqlDataSource)dataSource).setPassword("123456");

        //连接数据库! 相当于去执行这个任务
        //可能数据库连接失败,所以要处理异常!!!
        //这里的Connection类是选择java.sql包下的!!!!
        Connection connection = dataSource.getConnection();

        //这里就可以写我们的数据库sql代码了

        //我们在student 表中插入吕布的成绩
        //我们先写好sql字符串
        String sql = "insert into student values('吕布',101)";
        //然后将sql执行
        //这里的PreparedStatement 也是java.sql包下!!!
        PreparedStatement statement = connection.prepareStatement(sql);

        int ret = statement.executeUpdate(); //数据库增删改操作!!!
         
        //statement.executeQuery(); 数据库查询操作!!!
        
        
        System.out.println(ret);
        System.out.println("statement:"+statement);
        //关闭资源
        statement.close();
        connection.close();
    }
}

PreparedStatement

我们知道我们可以直接写好sql然后传入到PreparedStatement对象执行!
但是当我们需要执行多条sql
比如我们需要插入多个学生的成绩信息时!
显然一条一条写好传入不够科学!!!
因为每条语句都是只有名字和班级不同!!!

如何改进呢

Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine(); //输入姓名
        int class_ = scanner.nextInt();   //输入班级
        String sql = "insert into student values(?,?)"; //姓名和班级用通配符 ? 代替
        //然后将sql执行
        //这里的PreparedStatement 也是java.sql包下!!!
        PreparedStatement statement = connection.prepareStatement(sql);

        statement.setString(1,name); //传入第一列的姓名
        statement.setInt(2,class_); //传入第二列的班级

        int ret = statement.executeUpdate(); //数据库增删改操作!!!

在这里插入图片描述
利用通配符?我们就可以输入不同人的名字和班级了!!!

在这里插入图片描述
那如何去查看一张表的内容呢?

ResultSet ret = statement.executeQuery(); //数据库查询操作!!!

利用executeQuery();我们可以返回一个表结构!!!
我们对这个表结构进行遍历即可!!!

String sql = "select * from student";
        //然后将sql执行
        //这里的PreparedStatement 也是java.sql包下!!!
        PreparedStatement statement = connection.prepareStatement(sql);


        ResultSet ret = statement.executeQuery(); //数据库查询操作!!!
        //我们需要将查询后的数据保存在ResultSet表中!!!
        System.out.println("statement:"+statement);
        while (ret.next()){ //移动指针光标!!
            String name = ret.getString(1); //获取第一列的数据
            int class_ = ret.getInt(2);//获取第二列的数据
            System.out.println("name:"+name+" class:"+class_);
        }

在这里插入图片描述
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。