【Java】连接MySQL之简单的代码实现


【Java】连接MySQL之简单的代码实现


1.操作数据库有以下步骤:
  • (1)建立与数据库的连接Connection

  • (2)建立Statement

  • (3)建立ResultSet

  • (4)执行SQL操作                                                             捕获异常                   抛出异常

  • (5)使用ResultSet

  • (6)关闭ResultSet

  • (7)关闭Statement

  • (8)关闭Connection


2.具体步骤:
  • (1)建立与数据库的连接Connection
	Connection con;		//定义一个连接

想要连接我们的数据库,需要知道我们数据库的url,例如,之前创建的mydb数据库的url就是:
             jdbc:mysql://localhost:3306/mydb                     (3306是我们数据库的端口)
我们还需要数据库的用户名和密码,定义这些字符串:

	String url = "jdbc:mysql://localhost:3306/mydb";
    String user = "root";
    String password = "123456";

在建立连接之前,我们需要注册我们的Driver:
用到Class.forName(String)函数。

	Class.forName("com.mysql.jdbc.Driver");		//注意这个方法会抛出异常

所以我们改写为:

	try {
        Class.forName("com.mysql.jdbc.Driver");
    }catch (ClassNotFoundException e) {			//捕获 “ 没有找到这个类 ” 的异常
        System.out.println("没有找到Driver!");
        e.printStackTrace();
    }

接下来我们才可以建立连接:
建立连接用到 DriverManager.getConnection(String,String,String) 函数。
这个函数的参数分别是数据库的url,username,password,返回值为一个Connection连接:

	con = DriverManager.getConnection(url,user,password);		//建立连接并存储在con中

注意这个方法也会抛出一种异常,这个异常是SQL异常,当我们数据库连接失败的时候就会抛出SQL异常。

	try { 
        con = DriverManager.getConnection(url,user,password);	//建立连接并存储在con中
    }catch (SQLException e) {									//捕获SQL异常
        System.out.println("数据库连接失败!");
        e.printStackTrace();
    }

连接建立成功!



  • (2)建立Statement
    Statement是对SQL执行操作的主要对象,通过以下方法通过建立好的连接创建Statement:
	    statement = con.createStatement();				//通过连接创建Statement

现在只是局部代码,完整的代码将在最后给出~



  • (3)建立ResultSet
	    ResultSet rst;

ResultSet是对数据库进行一些SQL语句的操作后,得到的结果集合,我们先创建它,将在下一步中使用它。



  • (4)执行SQL操作
    我们之前提到Statement是对SQL执行操作的主要对象,所以我们用Statement执行SQL语句。
    Statement有几个调用SQL语句的方法:
	statement.execute(String sql);			//执行一条任意的SQL语句,返回值为boolean,是否执行成功
	statement.executeQuery(Stirng sql_query);//执行一条SQL查找语句,返回ResultSet
	statement.executeUpdate(String sql_update);//执行一条SQL更新语句(包括删除语句),返回int类型
										  	//,更改的位置

例如我们要执行一条插入语句如下:

	String sql = "INSERT into student(id,name) values(1,'小明')";
	statement.executeUpdate(sql);

即可将 [1 小明] 信息插入表中。
下面完整的建立连接以及插入数据的代码:

		String url = "jdbc:mysql://localhost:3306/mydb";	//数据库连接url
		
		//记得修改成你的数据库的用户名和密码
        String user = "root";				
        String password = "123456";

        Connection con;			//创建Connection 对象
        Statement statement;	//创建Statement 对象
        //注意这里还没有用到ResultSet,所以我们先不建立此对象

        try {
            Class.forName("com.mysql.jdbc.Driver");			//注册Driver 类
            
            con = DriverManager.getConnection(url,user,password);		//建立连接并存储在con中
            statement = con.createStatement();				//通过连接创建Statement
            
            String sql = "INSERT into student(id,name) values(1,'小明')";//插入操作
            statement.executeUpdate(sql);								//执行语句
            
            //关闭所有对象,将在下面介绍,注意不能改变关闭的顺序
            if(statement!=null) statement.close();					//关闭statement
            if(con!=null) con.close();								//关闭con
            
        }catch (ClassNotFoundException e) {					//捕获 “ 没有找到这个类 ” 的异常
            System.out.println("没有找到Driver");
            e.printStackTrace();
        }catch (SQLException e)								//捕获SQL异常
        {
        	System.out.println("数据库连接失败或SQL语句操作失败!");
            e.printStackTrace();
        }

可以直接复制到主函数中运行。
        程序退出返回,我们还看不到任何结果,因为没有输出,证明没有抛出异常,操作成功,我们可以去数据库控制台查看我们插入后的表数据:(如图)

在控制台输入
use mydb;
select * from student;
然后执行,可以查看到表中插入的数据。
查看表数据



  • (5)使用ResultSet

ResultSet常常使用在我们查找的时候,可以将查找的集合存入ResultSet,方便我们调用和管理。
例如以下简单的查找调用方法:

	String sql = "select * from student";	//查找全表
    rst = statement.executeQuery(sql);		//将表数据存入集合

接下来我们打印输出我们查找到的内容:

        ResultSet存储表中一行的数据,我们可以通过next()方法向下一行读取,
我们想获得每一列的的信息,可以用get方法来获取:

get方法使用如下:
       例如,我们的第一列是int类型的id,我们可以使用 srt.getInt(1); 来获取第一列的整数,同理我们想要获取第二列字符串类型的name,可以通过 rst.getString(2); 方法获取。

用下列方法来输出全表信息:

	//如果下一行数据存在(遍历查找到的每一行数据)
	while (rst.next())
    {
     	//输出每一行的第一列和第二列数据
        System.out.println(rst.getInt(1)+" "+rst.getString(2));
    }

在完成完整的查找实例之前,我们先向数据库中再添加一些数据,目前数据太少体现不出查找的作用。
在数据库控制台写入以下语句,并执行。
use mydb;
INSERT into student(id,name) values(2,‘小王’);
INSERT into student(id,name) values(3,‘小李’);
INSERT into student(id,name) values(4,‘小张’);
select * from student;
我们添加了三行数据,可以看到表中数据已经更新:
数据表
接下来在已有的代码上添加:

		String url = "jdbc:mysql://localhost:3306/mydb";	//数据库连接url
		
		//记得修改成你的数据库的用户名和密码
        String user = "root";				
        String password = "123456";

        Connection con;			//创建Connection 对象
        Statement statement;	//创建Statement 对象
        //注意这里添加创建了ResultSet对象
        ResultSet rst;

        try {
            Class.forName("com.mysql.jdbc.Driver");			//注册Driver 类
            
            con = DriverManager.getConnection(url,user,password);		//建立连接并存储在con中
            statement = con.createStatement();				//通过连接创建Statement
            
            //String sql = "INSERT into student(id,name) values(1,'小明')";//插入操作
            //statement.executeUpdate(sql);								//执行语句
            
            String sql = "select * from student";	//查找全表
    		rst = statement.executeQuery(sql);		//将表数据存入集合
    		
    		//如果下一行数据存在(遍历查找到的每一行数据)
			while (rst.next())
        	{
        		//输出每一行的第一列和第二列数据
            	System.out.println(rst.getInt(1)+" "+rst.getString(2));
        	}
            
            //关闭所有对象,将在下面介绍,注意不能改变关闭的顺序
            if(rst!=null) rst.close();								//关闭rst
            if(statement!=null) statement.close();					//关闭statement
            if(con!=null) con.close();								//关闭con
            
        }catch (ClassNotFoundException e) {					//捕获 “ 没有找到这个类 ” 的异常
            System.out.println("没有找到Driver");
            e.printStackTrace();
        }catch (SQLException e)								//捕获SQL异常
        {
        	System.out.println("数据库连接失败或SQL语句操作失败!");
            e.printStackTrace();
        }

运行查看输出结果:(输出的结果在红字上面)
输出结果
事实证明,调用成功了~



接下来是收尾工作了:

  • (6)关闭ResultSet
  • (7)关闭Statement
  • (8)关闭Connection
    之前的代码中已经展露出了这些对象的关闭方法,他们都有自己的Close()方法,直接调用即可,代码在这里不重复展示。

有必要说明的是他们的顺序:
        在使用他们的时候,是这样的顺序:
        先建立Connection连接,然后创建Statement,最后使用ResultSet,那么我们关闭他们的顺序应该正好相反,最后使用的应当最先关闭,最早使用的要最后关闭。

道理很简单,他们有层层依赖的关系:
Statement依赖于Connection,ResultSet依赖于Statement,如果没有关闭Statement,便直接关闭Connection,那么Statement就会失去依赖,抛出异常,导致程序错误。


  • 鸣谢!如有错误望指正!

上一篇【Java】连接MySQL之IDEA环境配置 https://blog.csdn.net/C1550153993/article/details/89350415

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值