Java基础 JDBC操作数据库

JDBC
java DataBase Connectivity
java 数据库连接
由一些接口和类构成的API ,这些接口和类主要在java sql,javax sql包中
JDBC操作数据库
JDBC操作数据库的步骤
加载数据库驱动
建立数据库连接对象
创建执行SQL的语句对象
执行SQL语句
处理结果
释放数据库资源
数据库厂商会实现符合自己数据库特点的数据库驱动程序。
常见数据库产品驱动加载方式
Mysql
Class.forName("com.mysql.jdbc.Driver");
Oracle
Class.forName("oracle.jdbc.driver.OracleDriver");
SQLServer 2008
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

建立数据库连接的方式
Connection conn = DriverManager.getConnection(url,user,password);
String类型的url参数用于指定与哪一台服务器上的哪一个数据库建立连接
URL的格式是:主协议:子协议://主机名:端口号/数据库名
如:jdbc:mysql://localhost:3306/test

String类型的user参数用于指定数据库连接的用户名
String类型的password参数用于指定数据库连接的密码

Statement对象
Statement stmt = conn.createStatement();

PreparedStatement对象
String sql = “select * from students where name = ? and sex = ?”;
PreparedStatement ps = conn.preparedStatement(sql);
ps.setString(1,”张三”);
ps.setString(2,”女”);

Statement类型语句对象的执行
boolean b = stmt.execute(sql);//执行任何sql语句
int I = stmt.executeUpdate(sql);//执行增删改SQL语句
ResultSet rs = stmt.executeQuery(sql);//执行查询语句

PreparedStatement类型语句对象的执行
boolean b = ps.execute();//执行任何类型sql语句
int I = ps.executeUpdate();//执行增删改类型sql语句
ResultSet rs = ps.executeQuery();//执行查询语句

处理执行结果

Statement对象或者PreparedStatement对象调用executeXxx()方法将SQL语句发送到数据库管理系统,数据库管理系统执行完毕之后会有结果返回,不同类型的sql语句以及不同的executeXxx()方法返回的结果都不相同,那么对结果的处理方式也不各不相同。

释放数据库资源
调用.close方法释放资源
释放ResultSet,Statement,Connection
Connection的使用原则是尽量晚创建,尽可能早释放,因为数据库的连接很有限,如果不及时释放将导致系统崩溃

应用对象 4种
强: 就算这个对象用过了,也不会释放 (常用)
软: 在垃圾检测的内存不足的时候会被释放 (不常用)
弱: 在垃圾检测的内存不足的时候不管有没有引用都会被释放 (偶尔)
虚: 检测到就释放掉 (偶尔)

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ChaJDBC
{
	// 创建一个加载MySQL的驱动路径
	private static String DBNAME = "com.mysql.jdbc.Driver";
	// 创建一个数据库的路劲
	private static String DBURL = "jdbc:mysql://127.0.0.1:3306/company";
	// 数据库的账户名
	private static String DBUSER = "root";
	// 数据库的密码
	private static String DBPASS = "zhang123";
	{
		try
		{ // 用静态代码块加载数据库驱动
			Class.forName(DBNAME);
		} catch (ClassNotFoundException e)
		{

			e.printStackTrace();
		}
	}

	public static void main(String[] args)
	{
		try
		{ // DriverManager 驱动器管理 获取一个执行sql语句的对象Connection
			Connection c = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
			// 获取一个执行静态sql语句的对象Statement
			Statement s = c.createStatement();
			//查询语句  返回一个ResultSet 查询结果集
			ResultSet r= s.executeQuery("select*from emp;");
			//用whlie 循环 导出内容
			while (r.next())
			{	//取int类型的数据getIn getString取字符串的  getDate取时间的
				System.out.println(r.getInt("empno")+
						"\t"+
						r.getString("ename")+
						"\t"
						+r.getDate("hiredate"));
			}

//first 判断有没有第一句
			if(r.first())
			{
				System.out.println(r.getString("ename"));
			}
			//关闭集 释放内存
			r.close();
			//关闭sql执行语句对象 释放内存
			s.close();
			//关闭 数据库链接  释放内存
			c.close();
			
			
		} catch (SQLException e)
		{

			e.printStackTrace();
		}


package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class TestJDBC
{	

//创建一个加载MySQL的驱动路径
	private static String DBNAME="com.mysql.jdbc.Driver";
	//创建一个数据库的路劲
	private static String DBURL="jdbc:mysql://127.0.0.1:3306/test";
	//数据库的账户名
	private static String DBUSER="root";
	//数据库的密码
	private static String DBPASS="zhang123";
	{
		try
		{	//用静态代码块加载数据库驱动
			Class.forName(DBNAME);
		} catch (ClassNotFoundException e)
		{
			
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args)
	{
		try
		{	//DriverManager 驱动器管理 获取一个执行sql语句的对象Connection
			Connection c=DriverManager.getConnection(DBURL, DBUSER, DBPASS);
			//获取一个执行静态sql语句的对象Statement
			Statement s=c.createStatement();
			//执行sql语句
			s.execute("create table te(id int primary key auto_increment,tname varchar(10));");
			//executeUpdate执行增删改 sql语句
			s.executeUpdate("insert into te(tname) values('哈哈');");
			s.executeUpdate("insert into te(tname) values('呵呵');");
			//修改 字段
			s.executeUpdate("alter table te change tname ttname char(6);");
			//删除 某个内容
			s.executeUpdate("delete from te where ttname='呵呵';");
			//修改内容
			s.executeUpdate("update te set ttname='hehe' where id=3;");
			
			
			
		} catch (SQLException e)
		{
			
			e.printStackTrace();
		}
	}
}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值