Java database connection:java数据库连接;
为什么要用Java连接数据库?
我们所需要的程序是自动化执行的,不是通过键盘在控制台下输入命令来控制DB的
JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库
l 导入jar包
l 注册驱动
l 获得连接
l 获得发送命令对象
l 发送命令,获得返回资源
l 处理返回的资源
l 关闭资源
Jdbc程序中的DriverManager用于加载驱动,并创建与数据库的链接,这个API的常用方法
Class.forName("com.mysql.jdbc.Driver");
DriverManager.getConnection(url, user, password),
URL用于标识数据库的位置,通过URL地址告诉JDBC程序连接哪个数据库
常用数据库URL地址的写法:
Oracle写法: jdbc:oracle:thin:@localhost:1521:sid
SqlServer写法: jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
MySql写法: jdbc:mysql://localhost:3306/sid
* create Statement st = conn.createStatement(); String sql = "insert into user(….) values(…..) "; int num = st.executeUpdate(sql); if(num>0){ System.out.println("插入成功!!!"); } * update Statement st = conn.createStatement(); String sql = “update user set name=‘’ where name=‘’"; int num = st.executeUpdate(sql); if(num>0){ System.out.println(“修改成功!!!"); } * delete Statement st = conn.createStatement(); String sql = “delete from user where id=1; int num = st.executeUpdate(sql); if(num>0){ System.out.println(“删除成功!!!"); } * read Statement st = conn.createStatement(); String sql = “select * from user where id=1; ResultSet rs = st.executeUpdate(sql); while(rs.next()){ //根据获取列的数据类型,分别调用rs的相应方法映射到java对象中 }
String sql = “select * from tab_student where s_number=?”; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, “S_1001”); ResultSet rs = pstmt.executeQuery(); rs.close();
SQL注入
SELECT * FROM users WHERE NAME= 'ss' AND PASSWORD = '' OR '1' = '1';
SELECT * FROM users WHERE NAME= 'ss' AND PASSWORD = '';DROP TABLE users;
提交事务(commit)
回滚事务(rollback)
当Jdbc程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会 自动向数据库提交在它上面发送的SQL语句.若想关闭这种默认提交方式,让多条 SQL在一个事务中执行,可使用下列的JDBC控制事务语句 Connection.setAutoCommit(false);//开启事务(start transaction) Connection.rollback();//回滚事务(rollback) Connection.commit();//提交事务(commit)
1.使用Statement对象添加要批量执行SQL语句,如下: Statement.addBatch(sql1); Statement.addBatch(sql2); Statement.addBatch(sql3); 2、执行批处理SQL语句:Statement.executeBatch(); 3、清除批处理命令:Statement.clearBatch(); 采用Statement.addBatch(sql)方式实现批处理的优缺点 优点:可以向数据库发送多条不同的SQL语句。 缺点:SQL语句没有预编译。 insert into account values(1,’DD’,100);
使用PreparedStatement完成批处理范例
long starttime = System.currentTimeMillis();