用配置文件,在工程的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();
}
}
}
要注意日期格式的书写,不然会报错;