jdbc学习日志01

JDBC

JDBC的主要作用是什么?
JDBC访问数据时常用的类和接口有哪些,它们的作用是什么?
JDBC访问数据的步骤是什么?
PreparedStatement与Statement相比,具有什么优势?


JDBC API
提供者:Sun公司
内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:
DriverManager类
Connection接口
Statement接口
ResultSet接口
DriverManager
提供者:Sun公司
作用:管理各种不同的JDBC驱动
JDBC 驱动
提供者:数据库厂商
作用:负责连接各种不同的数据库

JDBC API主要功能:与数据库建立连接、执行SQL 语句、处理结果

DriverManager :依据数据库的不同,管理JDBC驱动
Connection :负责连接数据库并担任传送数据的任务
Statement :由 Connection 产生、负责执行SQL语句
ResultSet:负责保存Statement执行后所产生的查询结果



使用纯Java方式连接数据库
由JDBC驱动直接访问数据库
优点:完全Java代码,快速、跨平台
缺点:访问不同的数据库需要下载专用的JDBC驱动



















JDBC

package com.hisoft.java.dao;

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

import com.hisoft.java.bean.Student;

public class JdbcDemo {
	
	Connection con;
	Statement state;
	ResultSet rs;
	
	public static void main(String[] args) {
		JdbcDemo jd = new JdbcDemo();
		jd.getConnect();
	}
	public void getConnect(){
		try {
//			加载驱动
			Class.forName("com.mysql.jdbc.Driver");
//			创建连接
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/javatest", "root", "root");
//			根据连接创建一个state对象
			state = con.createStatement();
//			执行sql,将查询结果返回给ResultSet对象
			rs = state.executeQuery("select * from students;");
//			对查询结果进行操作
			while(rs.next()){
//				int id = rs.getInt(1);
//				String name = rs.getString(2);
//				int age = rs.getInt("stu_age");
//				String sex = rs.getString("stu_sex");
//				String grade = rs.getString("grade");
//				System.out.println(id+"\t"+name+"\t"+age+"\t"+sex+"\t"+grade);
//				将每次从ResultSet集合中遍历的数据封装成一个Student对象
				
				Student stu = new Student();
				stu.setStu_id(rs.getInt("stuid"));
				stu.setName(rs.getString("stu_name"));
				stu.setAge(rs.getInt("stu_age"));
				stu.setSex(rs.getString("stu_sex"));
				stu.setGrade(rs.getString("grade"));
				System.out.println(stu.getStu_id()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getAge()+"\t"+stu.getGrade());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				rs.close();
				state.close();
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}
}

工具

package com.hisoft.java.utils;

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

public class JdbcUtils {

	static{
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getConnection() throws SQLException{
		String url = "jdbc:mysql://localhost:3306/javatest";
		String username = "root";
		String psw = "root";
		Connection con = DriverManager.getConnection(url, username, psw);
		return con;
	}
	/**
	 * 关闭资源
	 * @param conn
	 * @param stmt
	 */
	public static void close(Connection conn,Statement stmt){
//		6,释放资源,后找开先关闭
		try {
			if(stmt !=null){
				stmt.close();
				stmt=null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			if(conn != null){
				conn.close();
				conn=null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public static Statement getStatement(Connection conn){
		Statement sta = null;
		try {
			sta = conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return sta;
	}
	public static void close(Connection conn,Statement stmt,ResultSet rs){
//		6,释放资源,后找开先关闭
		try {
			if(rs != null){
				rs.close();
				rs=null;//gc
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if(stmt !=null){
				stmt.close();
				stmt=null;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if(conn != null){
				conn.close();
				conn=null;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}



登陆

package com.hisoft.java.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;

public class MasterLogin {
	Connection con;
//	Statement sta;
	PreparedStatement pre;
	ResultSet rs;
	static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		System.out.println("用户登录");
		System.out.println("请输入用户名");
		String name = sc.next();
		System.out.println("请输入密码");
		String psw = sc.next();
		MasterLogin ms = new MasterLogin();
		ms.login(name, psw);
	}
	public void login(String name,String psw){
		try {
			
			Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/javatest","root","root");
//			sta = con.createStatement();
			pre = con.prepareStatement("select * from master ma where ma.name=? and ma.password=?");
//			StringBuffer sb = new StringBuffer("select * from master ma where ma.name=");
//			sb.append("'"+name+"' and ma.password ='"+psw+"'");
//			System.out.println(sb.toString());
//			rs = sta.executeQuery(sb.toString());
			pre.setString(1, name);
			pre.setString(2, psw);
			rs = pre.executeQuery();
			if(rs.next()){
				System.out.println("登录成功");
			}else{
				System.out.println("登录失败");
			}
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}









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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值