• jdbc


    一、JDBC简介

    SUN公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 我们的java程序只要使用sun公司提供的jdbc驱动即可。

    二、JDBC使用

    1、加入相关jar包

    mysql-connector-java-5.1.7.rar

    2、java代码中使用步骤

    • 注册驱动
    • 建立连接
    • 创建statement
    • 执行sql ,得到ResultSet
    • 遍历结果集

    可以把一些参数、数据库用户名、密码等用一个配置文件存起来,方便修改。
    jdbc.properties文件格式:

    	driverClass=com.mysql.jdbc.Driver
    	url=jdbc:mysql://localhost/student
    	name=root
    	password=root
    

    加载jdbc.properties:

    		//1. 创建一个属性配置对象
    		Properties properties = new Properties();
    		InputStream is = new FileInputStream("jdbc.properties");
    		
    		//使用类加载器,去读取src底下的资源文件。 后面在servlet
    //			InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
    		//2. 导入输入流。
    		properties.load(is);
    		
    		//3. 读取属性
    		driverClass = properties.getProperty("driverClass");
    		url = properties.getProperty("url");
    		name = properties.getProperty("name");
    		password = properties.getProperty("password");
    

    连接数据库:

    		Class.forName(driverClass); //注册mysql-jdbc
            conn = DriverManager.getConnection(url, name, password); //链接
    

    执行sql语句:
    (1)不安全的做法:

    如果字符串里含有sql关键词,可能该字符串的那部分就会当作关键词而被sql执行,就会引起一些麻烦(比如下面的or)

    Statement st = conn.createStatement();
    String sql = "select * from t_stu where name='123 or 1=1'";
    		rs= st.executeQuery(sql);
    

    (2)安全的做法:

    		PrepareStatement ps;
    		String sql = "insert into t_user values(null , ? , ?)";
    		 ps = conn.prepareStatement(sql);
    		 
    		 //给占位符赋值 从左到右数过来,1 代表第一个问号, 永远你是1开始。
    		 ps.setString(1, userName);
    		 ps.setString(2, password);
    

    遍历结果集:

    		while(rs.next()){
    			String name = rs.getString("name");
    			int age = rs.getInt("age");
    			
    			System.out.println(name+"   " + age);
    		}
    

    使用完后释放资源:

    private static void closeRs(ResultSet rs){
    	try {
    		if(rs != null){
    			rs.close();
    		}
    	} catch (SQLException e) {
    		e.printStackTrace();
    	}finally{
    		rs = null;
    	}
    }
    //同理:
    	closeSt(st);
    	closeConn(conn);
    

    三、使用单元测试,测试代码

    1. 添加junit的支持。

      右键工程 --- add Library --- Junit --- Junit4

    2. 在方法的上面加上注解 , 其实就是一个标记。

      @Test
      public void testQuery() {
      ...
      }

    3. 光标选中方法名字,然后右键执行单元测试。 或者是打开outline视图, 然后选择方法右键执行。

    四、Dao模式

    Data Access Object 数据访问对象

    封装好数据库连接、查询等,声明与实现分开来。
    ps:平时也可以把这些东西封装成工具类

  • 相关阅读:
    系统设计题:如何设计一个电商平台积分兑换系统!
    服务器上部署多台mysql
    log4j日志输出格式一览
    Intellij IDEA 智能补全
    什么是旅行商问题——算法NP、P、NPC知识
    如何找到两个升序数组归并后的升序数组的中位数
    Java 不同进制的字面值
    Android 进程和线程
    美图秀秀2015年实习生android应用开发方向招聘笔试题
    Android:Layout_weight的深刻理解
  • 原文地址:https://www.cnblogs.com/lnu161403214/p/10437357.html
Copyright © 2020-2023  润新知