JDBC连接数据库

JDBC简介

JDBC是由java编程语言编写的类及接口组成,同时它为程序开发人员提供了一组用于实现对数据库访问的JDBC API,并支持SQL语言。利用JDBC可以将JAVA代码连接到oracle、DB2、SQLServer、MYSQL等数据库,从而实现对数据库中的数据操作的目的。
JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供填统一的访问。JDBC是sun开发的一套数据库访问编程接口,是一种SQL级的API。它是由java语言编写完成,所以具有很好的跨平台特性,使用JDBC编写的数据库应用程序可以在任何支持java的平台上运行,而不必在不同的平台上编写不同的应用程序。

JDBC的主要功能

(1)建立与数据库或者其他数据源的连接
(2)向数据库发送SQL指令
(3)处理数据库的返回结果

JDBC的连接步骤

1.导入mysql的驱动jar包:mysql-connector-java-5.1.34-bin.jar
   手动创建lib目录,添加jar包,并点击右键build path.
    在这里插入图片描述
   Add to build path 成功

   在这里插入图片描述
2.准备工作做完,开始我们的代码阶段。
开发步骤:
  1.加载驱动。
  2.获取数据库连接。
  3.sql语句书写。
  4.执行sql语句。
  5.返回执行结果。

public class DBUtil {
        static String driver="com.mysql.jdbc.Driver";//驱动
		static String url="jdbc:mysql://localhost:3306/homework?//地址characterEncoding=utf8";
		static String user="root";//用户名
		static String password="123456";//密码
	//第一步:由于驱动只需要执行一次,所以使用static静态代码块
	static{
			try {
				Class.forName(driver);
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}	
		}	
	//查看
	public static void getAllInF(){
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			//第二步:创建连接DriverManager.getConnection(url,username,password)
			conn=DriverManager.getConnection(url,user,password);
			//第三步:获取sql语句
			String sql="select * from stu"; //输入我们想要执行的sql语句。
			//第四步:
			ps=conn.prepareStatement(sql);
			rs=ps.executeQuery();
			while(rs.next()){
				//返回值boolean值
				int id=rs.getInt("id");
				String name=rs.getString("name");
				int age=rs.getInt("age");
				String major=rs.getString("major");
				System.out.println("id:"+id+" name:"+name+"age:"+age+" major:"+major);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			//关闭资源,先开的后关
			if(rt!=null){
				try {
					rt.close();
					if(ps!=null){
						ps.close();
						if(conn!=null){
							conn.close();
						}
					}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

如果我们每次去执行sql语句的时候都加载一次驱动,且建立连接的话,会非常的不方便,所以我们将公共的代码提出来,封装成一个方法,需要的时候只需要调用就好了。

public class DBUtil {

		static String driver="com.mysql.jdbc.Driver";
		static String url="jdbc:mysql://127.0.0.1:3306/homework?characterEncoding=utf8";
		static String user="root";
		static String password="123456";
		
	//加载数据库驱动     所有方法都使用静态的  方便使用   记得处理异常
		static{
			try {
				Class.forName(driver);
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}	
		}	
		//获取数据库连接    记得是对象调用该方法会得到已经连接了数据库的对象	
		public static  Connection getConn() throws SQLException{
		return DriverManager.getConnection(url,user,password);
			
		}
		
		//关闭资源
		public static void close(ResultSet rt,PreparedStatement ps, Connection conn){
			
			if(rt!=null){
				try {
					rt.close();
					if(ps!=null){
						ps.close();
						if(conn!=null){
							conn.close();
						}
					}
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
}

方法封装完成,我们试着完成一次sql操作:

public List<StuBean> getAll() {
		List<StuBean> list= new ArrayList<StuBean>();
		try {
			Connection conn = DBUtil.getConn();
			String sql = "select * from select * from stu";
			PreparedStatement ps = conn.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				int id=rs.getInt("id");
				String name=rs.getString("name");
				int age=rs.getInt("age");
				String major=rs.getString("major");
				System.out.println("id:"+id+" name:"+name+"age:"+age+" major:"+major);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		return list;
	}

当然,这只是查询操作,我们还可以进行删除,修改等操作。而且只需要调用连接方法就可以完成数据库连接,这会节省我们大量时间和精力。

使用properties配置文件

实际应用中,我们需要获得四个参数(驱动,URL,用户名,密码),通常都放在配置文件,如果我们需要更换数据库,只需要更改配置文件中的参数即可。通常情况下,我们习惯使用properties文件进行配置
文件位置:可以放在任意位置,但是我们建议放在src下
文件名称:任意,后缀名是.propertiesj即可。
文件内容:一行一组数据,格式为"key=value".
  key可以自定义,如果是多个单词,习惯使用.隔开,如jdbc.driver
  value不支持中文,如果不使用非英文字符,将进行unicode转换

首先我们创建properties文件db.properties,文件内容如下:

driver=com.mysql.jdbc.Driver;
url=jdbc:mysql://localhost:3306/homework?characterEncoding=utf8;
user=root;
password=123456;

加载配置文件,进行数据库连接

方式一

public class JDBCUtils {
	private static String driver;
	private static String url;
	private static String username;
	private static String password;
	
	/**
	 * 静态代码块加载配置文件信息
	 */
	static{
		ResourceBundle bundle = ResourceBundle.getBundle("db");
		driver = bundle.getString("driver");
		url = bundle.getString("url");
		username = bundle.getString("username");
		password = bundle.getString("password");
		try {
				Class.forName(driver);
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}	
	}

	/**
	 * 获取连接方法
	 * 
	 * @return
	 */
	public static  Connection getConn() throws SQLException{
		return DriverManager.getConnection(url,username,password);
			
		}

//关闭资源
		public static void close(ResultSet rt,PreparedStatement ps, Connection conn){	
			if(rt!=null){
				try {
					rt.close();
					if(ps!=null){
						ps.close();
						if(conn!=null){
							conn.close();
						}
					}
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
}

方式二

public class JDBCUtils_01 {
	private static String driver;
	private static String url;
	private static String username;
	private static String password;

	/**
	 * 静态代码块加载配置文件信息
	 */
	static {
		try {
			// 1.通过当前类获取类加载器
			ClassLoader classLoader = JDBCUtils_V3.class.getClassLoader();
			// 2.通过类加载器的方法获得一个输入流
			InputStream is = classLoader.getResourceAsStream("db.properties");
			// 3.创建一个properties对象
			Properties props = new Properties();
			// 4.加载输入流
			props.load(is);
			// 5.获取相关参数的值
			driver = props.getProperty("driver");
			url = props.getProperty("url");
			username = props.getProperty("username");
			password = props.getProperty("password");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 获取连接方法
	 * 
	 * @return
	 */
	public static Connection getConnection() {
		Connection conn = null;
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, username, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}

	//关闭资源
		public static void close(ResultSet rt,PreparedStatement ps, Connection conn){	
			if(rt!=null){
				try {
					rt.close();
					if(ps!=null){
						ps.close();
						if(conn!=null){
							conn.close();
						}
					}
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值