Java使用JDBC操作MySQL的基本实现

本文介绍了Java使用JDBC连接MySQL数据库的基本步骤,包括驱动类注册、建立连接、使用Statement执行SQL语句以及资源关闭。详细讲解了JDBC操作数据库的流程,适合初学者学习。
摘要由CSDN通过智能技术生成

一、JDBC

什么是JDBC?

        Java Database Connectivity:Java访问数据库的解决方案。

        它是一种解决方案,里面定义了一套标准接口API,能够用同样的方式访问和操作不同厂商数据库。

如何使用JDBC?

        想要使用JDBC,需要先了解与之相关的类与接口:

       a,驱动管理类 DriverManage

        b,连接接口 Connection

        c,语句对象接口 Statement

       d,结果集接口 ResultSet

        操作步骤:

        使用JDBC需要下载导入对应的数据库的驱动,在项目的根目录下新建lib文件,此文件夹只作为我们的架包目录。

        我用的是Java8.0的支持的驱动包

        1f011dce4cb84673b2d41e8f70dfe103.png

 

        导入之后选中,右键Build Path -->>Configu....构建路径。

b85a53377d8846d2b52315dad426ece4.png

 

        1,驱动类的注册

使用驱动管理类 DriverManage,加载驱动类,通过Class.forName( )方法,完成驱动类的注册。

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

        2,获取Connection 链接对象。

 根据URL连接参数找到与之匹配的Driver对象, 调用其方法获取连接。 

(Driver:提供对特定磁盘驱动器或网络共享属性的访问。这里指的是数据库)

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Login?serverTimezone=GMT", "root", "123456");

4f560a85047f4cb2ad870598d999e0a9.png

链接字符串:不同的数据库字符串不同,比如Oracle的是Oracle: jdbc:oracle:thin:@

数据库地址:数据库的地址以及端口号     localhost:本机IP        3306:MySQL默认 端口号

数据库名:具体要连接数据库服务器上的数据库名字

3,使用Statement接口,用于执行SQL语句

         ①获取Statement对象

Statement statm = conn.createStatement();

        ②执行SQL语句

//执行DQL(查询)语句使用executeQuery
ResultSet rs = statm.executeQuery(sql(字符串));
返回的结果是结果集,需要解析,(遍历解析);

//执行DML(增,删,改)语句使用executeUpdate
int ret = statm.executeUpdate(sql(字符串));
返回的结果是数据库虚拟表的影响行数,int类型(可以用if判断是否修改成功);

注意:如果有使用到事务的情况,由于使用Mysql的事务,自动提交默认会关闭,我们执行DMQ时,并不会对数据库参生影响。需要我们手动提交Commit和回滚Rollback

int ret = tmapper.deleteTeacher(t);
		if (ret>0) {
            sqlSession.commit();
		    System.out.println("成功");
            }else {sqlSession.rollback();
            System.out.println("失败");
		}

事务(Transaction),就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内 的所有SQL都将被取消执行。

 

4,关闭并释放资源

 数据库执行完毕以后要释放资源;

方法:对象.close();

Connection

conn.close();

Statement

statm.close();

ResultSet

ret.close();

 

看两个完整的例子:

①DQL解析查询:

	public List<Student> findAllStudent(){
		List<Student> slist = null;
		
			Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT", "root", "123456");

			Statement statm = conn.createStatement();

			ResultSet ret = statm.executeQuery("select * from student");

			if(ret != null) {
				slist = new ArrayList<Student>();
				while(ret.next()) {
					Student s = new Student();
					s.setBirthday(ret.getDate("birthday"));
					s.setClassid(ret.getInt("classid"));
					s.setSid(ret.getInt("sid"));
					s.setSname(ret.getString("sname"));
					s.setSsex(ret.getString("ssex"));
					slist.add(s);
				}
			}
		
				if(ret != null) {
					rs.close();
				}
				if(statm != null) {
					statm.close();
				}
				if(conn != null) {
					conn.close();
				}
		return slist;
	}

 

②DML增删改例子:

public boolean addStudent(Student s) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        boolean isture=false;
	
			Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool?serverTimezone=GMT", "root", "123456");

			Statement statm = conn.createStatement();

			 String sql = "insert into student(sname,birthday,ssex,classid)" values('"+s.getSname()+"','"+ sdf.format(s.getBirthday()) +"','"+s.getSsex()+"',"+s.getClassid()+")";

            
			 int ret = statm.executeUpdate(sql);
                if(ret > 0) {
				 istrue = true;
			    } 
                if(statm != null) {
					statm.close();
				}
				if(conn != null) {
					conn.close();
				}
		return istrue;
}

注:以上代码均为文本演示,以简洁直观为主,不可直接引用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值