JAVAapi—数据库连接

介绍:

JDBC(Java DataBase Connectivity) 称为Java数据库连接,它是一种用于数据库访问的应用程序API,由一组用Java语言编写的类和接口组成,有了JDBC就可以用同一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异。 有了JDBC,就不必为访问Mysql数据库专门写一个程序,为访问Oracle又专门写一个程序等等。

JDBC核心接口与类JDBC核心类库包含在java.sql包中。

接口:
Connection:特定数据库的连接(会话)。在连接上下文中执行SQL语句并返回结果。
PreparedStatement:表示预编译的 SQL 语句的对象。
Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。
ResultSet :表示数据库结果集的数据表,通常通过执行查询数据库的语句生成 。
CallableStatement :用于执行 SQL 存储过程的接口 。
类:
DriverManager:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并注册后才可以使用,同时提供方法来建立与数据库的连接。
SQLException:有关数据库操作的异常。

加载驱动(只做一次):

1.打出SQLServerDriver,按快捷2.使用Class.forName加载驱动

 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

建立连接(Connection):

String url = "jdbc:sqlserver://localhost:1433;databasename=数据库名称";
//注:SqlServer也可以更换成其他的 (如:MySQL等)
Connection con = DriverManager.getConnection(url, "sa", "sa123");
//注:(url, "sa", "sa123")  这里的是我的SqlServer的连接账号和密码

执行语句(preparedstatement):

PreparedStatement ps = con.prepareStatement("insert into student values(?,?,?)");
//注: ?代表占位符,一个占位符意味着需要一个变量来填充
 Scanner mys=new Scanner(System.in);
        System.out.println("请输入你的名字");
        String name=mys.next();
        System.out.println("请输入你的年龄");
        int age=mys.nextInt();
        //默认生日是当前时间
        Date brithday=new Date(System.currentTimeMillis());
 
       int n = ps.executeUpdate();// n就是数据库收到影响的行数
         // 怎么判断是否操作成功
            System.out.println(n>0?"成功":"失败");
            

关闭资源:

 
		if(con!=null&&!con.isClosed()) {
			con.close();
		}
		if(ps!=null) {
			ps.close();
		}

以上的执行语句 增删改查 中有许多代码都是重复的非常的麻烦,下面请看优化版本:

———————————————

首先建立一个包 come.util 在这个包中建立一个帮助类 DBHelper

//使用静态代码块加载驱动
        static {
		
		    try {
		    	Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
		    } catch (ClassNotFoundException e) {
	    		e.printStackTrace();
    		}
    	}
//定义连接语句
    private static final String URL="jdbc:sqlserver://localhost:1433;databasename=api_284";
//获得连接
        public static Connection getCon() {
	    	try {
	        	return	DriverManager.getConnection(URL,"sa","123456");
	    	} catch (Exception e) {
			    e.printStackTrace();
		}
		return null;
	}
//关闭资源:连接con,执行对象ps,结果集rs  
    public static void close(Connection con,PreparedStatement ps,ResultSet rs) {
    		try {
	    		if (con!=null&&!con.isClosed()) {
	    			con.close();
	    		}
		    	if (ps!=null) {
		    		ps.close();  
		    	}
		    	if (rs!=null) {
		    		rs.close();
		    	}
		    } catch (Exception e) {
			    e.printStackTrace();
		}

首先建立一个包 come.dao 在这个包中建立一个dao类 以数据库中的表名开头(如:studedao)

//定义方法
    private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
//增
public int add(Student stu) {
		try {
			con = DBHelper.getCon();
			String sql = "insert into student values(?,?,?)";
			ps = con.prepareStatement(sql);
			ps.setString(1, stu.getName());
			ps.setInt(2, stu.getAge());
			ps.setDate(3, stu.getBirthday());
			return ps.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con,ps,rs);
		}
		return 0;
	}
//删
public int delect(int id) {
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("delete from student where id=?");
			ps.setInt(1, id);
			return ps.executeUpdate();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return 0;
	}
//改
public int update(Student stu ) {
		try {
			con=DBHelper.getCon();
			String sql="update student set name=? where id=?";
			ps=con.prepareStatement(sql);
			ps.setString(1, stu.getName());
			ps.setInt(2, stu.getId());
			return ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return 0;
	}
//查
public  List<Student> list(){
		List<Student> list=new ArrayList<Student>();
		try {
			con=DBHelper.getCon();
			ps=con.prepareStatement("select*from student");
			rs=ps.executeQuery();
			while (rs.next()) {
				Student stu=new Student();
				stu.setId(rs.getInt(1));
				stu.setName(rs.getString(2));
				stu.setAge(rs.getInt(3));
				stu.setBirthday(rs.getDate(4));
			list.add(stu);  
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return list;
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值