MySQL数据库JDBC编程
创始人
2024-04-10 21:13:27

目录

前言:

项目中导入驱动包

插入记录

创建数据源

连接数据库

构造sql语句

执行sql语句

释放资源

整体代码展示

查看数据

代码展示

小结:


前言:

    MySQL为Java提供了驱动包。通过Java程序实现的客户端,可以通过这个驱动包,把客户端和MySQL服务器进行网络通信。

项目中导入驱动包

    将驱动包下载好之后,直接复制到项目中的包中(我这里是lib包下)。然后点击下面的Add as Library导入到库中,之后就可以发现可以解析这个驱动包了,也就成功了。

插入记录

创建数据源

    首先需要创建数据源,它是描述数据库服务器在哪里,然后才可以经过客户端进行连接服务器。

DataSource dataSource = new MysqlDataSource();

    这里是构造了一个datasource对象。采取向上转型的方式。这样的好处是,如果使用不同的数据库,它所提供的驱动包也会不一致,那么我们只需要改动这一处代码就可以。

    JDBC支持两种方式的风格。DriverManager和DataSource。DriverManager会利用反射的机制,并且它不支持重复连接,它会直接关闭物理连接。DataSource内置了数据库连接池,其中可以创建一定数量的数据库连接,并且支持重复连接,它只是回收了对象。这里介绍DataSource方式的风格。

jdbc:mysql://127.0.0.1:3306/test9?characterEncoding=utf8&useSSL=false

  • jdbc:mysql这个是jdbc下的MySQL。
  • 127.0.0.1特殊的ip地址,用来指向本电脑的ip,称为环回ip。只要服务器和客户端在同一个主机上就可以使用这个ip。
  • 3306MySQL程序的端口号,默认是3306。
  • test9数据库名。
  • characterEncoding=utf8描述了请求的编码字符集,这里是utf8。
  • useSSL=false关闭加密方式。

设置URL,用户名及密码

DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test9?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("用户名");
((MysqlDataSource)dataSource).setPassword("密码");

    注意:这里需要向下转型。创建数据源需要确定数据库的具体位置,及一些信息。

连接数据库

Connection connection = dataSource.getConnection();

    注意:连接数据库是把这个客户端和服务器进行连接。这里要使用java.sql下的Connection。这里会抛异常,需要对异常进行处理。

构造sql语句

String sql = "insert into student values(1, 'aaa')";
String sql = "insert into student values(?,?)";//设置通配符
PreparedStatement statement = connection.prepareStatement(sql);//预处理
//替换通配符
statement.setInt(1, id);
statement.setString(2, name);

注意:

   有两种方式构造sql语句。第一种是直接写出来。第二种是设置通配符,通过接下来对sql进行预处理,返回的对象来设置通配符里面的值。第一个?位置是1,第二个?位置是2以此类推。

    这里使用PreparedStatement,优点是可以执行带或者不带参数的sql,sql语句会预编译在数据库系统,执行速度快于Statment对象。

执行sql语句

//执行sql语句,返回所影响的行数
int ret = statement.executeUpdate();

    注意:执行插入,修改,删除时使用executeUpdate,查看记录使用executeQuery。插入时会返回所影响的行数。

释放资源

//释放资源,断开连接
statement.close();
connection.close();

    注意:当进行资源的利用,就需要去释放相应的资源。不然就很有可能造成内存泄漏。释放资源时,需要释放其他资源最终断开连接。即释放资源和连接资源顺序是相反的。

整体代码展示

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;public class JDBCInsertDemo {public static void main(String[] args) throws SQLException {//先创建DateSource数据源,描述数据库服务器在哪DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test9?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("用户名");((MysqlDataSource)dataSource).setPassword("密码");Scanner scanner = new Scanner(System.in);System.out.println("请输入学号:");int id = scanner.nextInt();System.out.println("请输入姓名:");String name = scanner.next();//建立连接Connection connection = dataSource.getConnection();//构造sql语句//String sql = "insert into student values(" + id + " , '" + name + "')";String sql = "insert into student values(?,?)";//设置通配符//对sql语句进行预处理,jdbc 中还需要搭配一个特定的对象, 来描述这里的 sql 的情况PreparedStatement statement = connection.prepareStatement(sql);//替换通配符statement.setInt(1, id);statement.setString(2, name);//执行sql语句,返回所影响的行数int ret = statement.executeUpdate();System.out.println(ret);//释放资源,断开连接statement.close();connection.close();}
}

查看数据

    这里和插入记录的差别是在执行sql时使用的方法不同,返回的结果不同。插入记录使用的是executeUpdate返回的结果是所影响的行数,查看记录使用的是executeQuery返回查看结果集合。然后只需要遍历这个集合就可以看见所查询的记录。

    注意:集合遍历时,是以行为单位进行遍历的。其中的参数填对应列的列名,方法就使用相对应的类型。

代码展示

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCSelectDemo {public static void main(String[] args) throws SQLException {//创建数据源,描述数据库服务器位置DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/test9?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("用户名");((MysqlDataSource)dataSource).setPassword("密码");//建立连接Connection connection = dataSource.getConnection();//构造sql,预处理String sql = "select * from student";PreparedStatement statement = connection.prepareStatement(sql);//执行sql,返回结果集合ResultSet resultSet = statement.executeQuery();//遍历集合,打印数据while(resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");System.out.println(id + " " + name);}//释放资源resultSet.close();statement.close();connection.close();}
}

小结:

    JDBC编程为我们操作数据库带来了很大的遍历,需要我们掌握和使用它。

相关内容

热门资讯

卓创资讯:1月蛋鸡养殖终现盈利... .ct_hqimg {margin: 10px 0;} .hqimg_wrapper {text-a...
1月26日恒生港股通ETF(1... 数据显示,1月26日,恒生港股通ETF(159318)遭净赎回141.29万元,位居当日跨境ETF净...
京仪装备股价涨5.14%,新华... 1月27日,京仪装备涨5.14%,截至发稿,报124.61元/股,成交4.26亿元,换手率2.91%...
道琼斯ETF(513400)已... 数据显示,1月26日,道琼斯ETF(513400)获净申购3756.39万元,位居当日跨境ETF净流...
1月26日汇添富国证港股通创新... 数据显示,1月26日,汇添富国证港股通创新药ETF(159570)获净申购2613.44万元,位居当...