用配置文件,在工程的src包下建立properties文件夹;(建立
floder--lib将数据库需要的jar包导入,要add to path)
建立连接:
1.读取配置文件基本信息:用户名、密码、url、加载驱动:driverClass=com.mysql.jdbc.Driver(mysql已经写好,直接调用就可以)
配置文件内容:
user=root
password=101502
url=jdbc:mysql://localhost:3306/customersdb
driverClass=com.mysql.jdbc.Driver
java:
1.读取配置文件信息
2.加载驱动
3.建立连接
//1.读取配置文件中的四个基本信息 InputStream is = jdbcTest1.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties pros = new Properties(); pros.load(is);//加载配置文件中的信息 String user = pros.getProperty("user"); String password = pros.getProperty("password"); String url = pros.getProperty("url"); String driverClass = pros.getProperty("driverClass"); //2.加载驱动 Class.forName(driverClass); //3.获取连接 Connection conn = DriverManager.getConnection(url, user, password); System.out.println(conn);
java中操作数据库,
/*
* 使用Statement弊端:需要拼写sql语句,并且存在sql注入的问题
* 为了避免出现sql注入问题,用PreparedStatement(statement扩展而来)取代Statement
*PreparedStatement代替Statement来实现增删改查操作
*增删改 查:
*增删改:不需要返回;查:要有返回值
*
*/
使用PreparedStatement:
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
用类加载器通用性好
Connection conn = null; PreparedStatement ps = null; try { //InputStream is = jdbcTest1.class.getClassLoader().getResourceAsStream("jdbc.properties"); InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties"); Properties pros = new Properties(); pros.load(is);//加载配置文件中的信息 String user = pros.getProperty("user"); String password = pros.getProperty("password"); String url = pros.getProperty("url"); String driverClass = pros.getProperty("driverClass"); //2.加载驱动 Class.forName(driverClass); //3.获取连接 conn = DriverManager.getConnection(url, user, password); //System.out.println(conn); //4.预编译sql语句,返回PreparedStatement的实例 String sql = "insert into customers(name,email,birth) values (?,?,?)"; //上述?为占位符 ps = conn.prepareStatement(sql); //5.填充占位符 ps.setString(1, "哪吒"); ps.setString(2, "nezha@qq.com"); //注意填充的类型,日期类型转化后再填充 //定义日期格式,要注意日期的填充,设置日期格式,日期格式转化,util下的,然后再以sql形式添加 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = sdf.parse("1000-01-01"); ps.setDate(3, new Date(date.getTime())); //6.执行操作 ps.execute(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //7.资源的关闭 try { ps.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if(conn != null) { conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
要注意日期格式的书写,不然会报错;