jdbc001:用java连接MySQL数据库

jdbc是重点,不管是哪种语言,都是要连接数据库的,java不管是连哪个数据库,都是要用到jdbc。jdbc的全称是:java database connection,也就是java连接数据库。
一,jdbc原理
Jdbc是sun公司定义的一套api,一套标准,也就是如果想连接数据库,就得按照人家的这个标准来。

应用层()–jdbc(数据库的连接,数据库的一些对象)–数据库驱动(就是那些实现了jdbc标准的那些厂商写的那些代码api)–数据库管理系统(mysql)

在这里插入图片描述
1,如上图:java连接数据库,不是直接连接,而是先加载了一个第三方插件,而这个第三方插件就是jdbc。所以连接数据库的第一步就是要加载jdbc。这个基本上是固定写法

Class.forName:返回与给定的字符串名称相关联类或接口的Class对象。
Class.forName是一个静态方法,同样可以用来加载类。该方法有两种形式:Class.forName(String name, boolean initialize, ClassLoader loader)和 Class.forName(String className)。
第一种形式的参数 name表示的是类的全名;initialize表示是否初始化类;loader表示加载时使用的类加载器。第二种形式则相当于设置了参数 initialize的值为 true,loader的值为当前类的类加载器。

很显然这里用的是第二种加载方式。

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

Class.forName()中传入的参数就是类的全限定名,JVM通过该全限定名首先检查该类是否已经被加载,若该类没有被加载则加载该类。并返回该类相关的Class对象。

2,加载完了之后需要创建连接,连接java和MySQL,就是上图中的桥。只有有路,数据才能过去

Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/ss","root","");

实现了collection接口。 作为初始化的一部分,DriverManager 类会尝试加载在 “jdbc.drivers” 系统属性中引用的驱动程序类。这允许用户定制由他们的应用程序使用的 JDBC Driver
getcollection是drivermanager的一个方法。试图建立到给定数据库 URL 的连接。DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。

里面接数据库名字+IP地址+端口号下的库名,账号,MySQL默认root,密码
3,写一条MySQL语句:它不是直接把数据写到MySQL中去,而是写一条语句,把语句传送到数据库当中去,然后数据库自己执行该语句,实现数据的增删改查。

String sql="INSERT INTO person VALUES(3,'王五')";

4,写完数据,就需要一辆车把数据送过去,statement就是一辆车。

Statement st= con.createStatement();

statement建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法 createStatement 创建
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute

注意:MySQL是有最大连接数的,就是你传完数据后就要断开连接,要不然,当达到最大连接数后,其他用户连接不到数据库
查询MySQL默认的最大连接数:比如我的最大连接数是800

SHOW VARIABLES LIKE '%max_connections%';

在这里插入图片描述
二,简单的增删改查
1,增删改:
增加:

String sql="INSERT INTO person VALUES(3,'王五')";

删除:

String sql="delete from person where pid=1";

修改:

String sql="update person set pname='赵六' where pid=2";

代码演示:

package com.zhang.mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
	//加载驱动,因为他是第三方
		Class.forName("com.mysql.jdbc.Driver");
		//创建连接
	    Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/ss","root","");
		String sql="select * from person";
		//创建一辆车
		Statement st= con.createStatement();
		st.execute(sql);
	    con.close();
		System.out.println("over");
	}
}

如果这样直接运行的话,一定会报错,因为eclipes中没有带jdbc,需要你倒过来
在这里插入图片描述
把这个放到你的创建的项目下,右键咖啡边奶瓶
在这里插入图片描述
但是如果你的需要传输的语句写错啦,就会报1以下错误:
在这里插入图片描述
是String sql=“INSERT INTO person VALUE(1,‘张三’)”;这句话拼写错误了,或者里面的数据类型和数据库不一致。导致st.execute(sql);这句话执行不过去,这个时候注意语句的拼写,数据类型也要和元数据一致。
2,查询,查询比较复杂一点:

package com.zhang.mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Test {
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		Class.forName("com.mysql.jdbc.Driver");
	    Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/ss","root","");
		String sql="select * from person";
		Statement st= con.createStatement();
		boolean b=st.execute(sql);
		//execute返回一个布偶类型,如果有结果集,它返回true,没有结果集,它返回false,
		//这个结果集不是指有无数据返回,即使没有数据返回,它也有结果集,他有元数据返回
		//了。
		if(b){
			ResultSet rs=st.getResultSet();//注意包不要倒错,纯sql包
			//这句话是要打印表头
			System.out.println("pid"+"\t"+"pname");
			while(rs.next()){//如果rs有下一项,就输出
				//查询的时候,要输出第一列和第二列,getobject是因为不知道
				//具体是什么类型的,最好转成object类型
				System.out.println(rs.getObject(1)+"\t"+rs.getObject(2));
			}
		}
		//连接默认800,用完了之后要关了连接,给其他人腾出连接空间
		con.close();
		System.out.println("over");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值