数据库连接java相关操作

1、加载驱动

2、获取连接

3、获取statement对象,执行sql语句

(1)sql没有?----》Statement

(2)sql有?------》PreparedStatement

执行sql:

添加/更新/删除 ----》execute()

查询------》executeQuery()

Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)。

4、关闭资源

resultSet

statement

Connection

特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。(使用原则:尽量晚的创建,尽量早的释放)    

 

ResultSet提供了将数据库类型转换为java中可以使用的类型

 

其他知识:

ip:计算机在网络中的唯一标识域名

与ip地址一一对应DNS:域名解析服务器

url:统一资源定位符:uniform resource location
协议://ip/文件路径
jdbc:mysql://localhost:3306/db_0425

 

数据库连接基本操作

public static void add(){
		try {
			//1.加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			/* url:统一资源定位符 uniform resource location
			 * 	格式:    协议://ip/资源文件路径
			 *     告诉JDBC要连接哪个数据库
			 */
			
			//2.获取连接
			//param1: 数据库地址  url
			//param2: 用户名
			//param3: 密码
            /*
            *Jdbc程序中的Connection,它用于代表数据库的链接,Collection是数据库编程中最重要的                
            *一个对象,客户端与数据库所有交互都是通过
            *
            */
			Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db_0425", "root", "123456");

			//3.获取statement对象  , 执行sql语句
            //Statement对象用于向数据库发送SQL语句
			Statement statement = connection.createStatement();
			// 执行查询语句: executeQuery()
			// 执行添加/删除/修改: execute()
			statement.execute("insert into user(name,password,age) values('王五','123',20)");


			//4. 关闭资源
			connection.close();
			
			//ResultSet用于代表SQL语句的执行结果。Resultset封装执行结果时,采用的类似于表格的                
            //方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之  
            //前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的 
            //数据。注意:列的索引从1开始。






		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}

 

遍历数据库表中数据

	//查询user表中所有数据
	public static void queryAll(){
		try {
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://127.0.0.1:3306/db_0425";
			Connection connection = DriverManager.getConnection(url, "root", "123456");
			Statement statement = connection.createStatement();
			//查询:query
			// 查询到的结果在ResultSet中
			ResultSet set = statement.executeQuery("select * from user");
			
			// 遍历
			while(set.next()){
				//set 指向当前这条数据
				//获取这条数据的各个字段数据
				
				//根据索引获取(列的索引从1开始)
				int id = set.getInt(1);
				//根据字段名称获取   (表中字段名) 
				String name = set.getString("name");
				String password = set.getString("password");
				int age = set.getInt("age");
				System.out.println("id:"+id+" name:"+name+" password:"+password+" age:"+age);
			}
			
			//4.关闭资源
			set.close();
			statement.close();
			connection.close();
			
			
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

 

带参数的数据对数据库进行操作

 

public static void addUser(String name,String password,int age){
		try {
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://127.0.0.1:3306/db_0425";
			Connection connection = DriverManager.getConnection(url, "root", "123456");
			/*
			Statement statement = connection.createStatement();
			statement.execute("insert into user(name,password,age) values('"+name+"','"+password+"')")
			 */
			// ? :占位符
			String sql = "insert into user(name,password,age) values(?,?,?)";
			//PreparedStatement 预处理statement
			PreparedStatement pStatement = connection.prepareStatement(sql);
			// 把?替换成具体数据
			//parameter:参数
			//param1: 参数的索引  ?的索引  :从1开始  
			//param2: ?对应的具体数据
			pStatement.setString(1, name);
			pStatement.setString(2, password);
			pStatement.setInt(3, age);
			//执行sql  (调用不带参数的方法)
			pStatement.execute();
			
			//关闭资源
			pStatement.close();
			connection.close();
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值