JDBC连接mysql数据库
- 格式:doc
- 大小:39.00 KB
- 文档页数:3
黄色背景代表步骤、绿色北京代表相同的代码红色字代表使用Statement类、蓝色字代表使用PreparedStatement类关于两者的比较,看最下面的附件11、下载及配置JDBC本地驱动(1)下载MySQL的JDBC本地驱动程序若是Oracle,则直接拷贝D:\oracle\product\10.1.0\db_1\jdbc\lib中的classes12.jar(2)将驱动程序拷贝到WEB-INF/classes中即可若想使用dos命令操作数据库,则还需如下几步:(1)将驱动程序拷贝到任意位置,例如C盘(2)配置环境变量CLASSPATH,变量值为.;C:\mysql-connector-java-5.0.4-bin.jar2、加载驱动程序public static final String DBDRIVER=”org.gjt.mm.mysql.Driver”;try{Class.forName(DBDRIVER);}catch(ClassNotFoundException e){e.printStackTrace();}3、创建链接import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public static final String DBURL=” jdbc:mysql://localhost:3306/vcdp”;public static final String DBUSER=”root”;public static final String DBPASS=”root”;Connection conn=null;try{conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);}catch(SQLException e){e.printStackTrace();} 4、编写sql语句String sql="INSERT INTO user(id,sex,age,score,birth) VALUES('"+id+"','"+sex+"',"+age+",'"+score+"','"+brith+"')";或String sql="INSERT INTO user(id,sex,age,score,birth) VALUES('01','男',20,9.2,’1990-02-12’)";String sql="INSERT INTO user(id,sex,age,score,birth) VALUES(?,?,?,?,?) ";String sql="SELECT * FROM user WHERE id LIKE ? OR sex LIKE ? OR age LIKE ?";5、创建Statement实例对象、或创建PreparedStatement实例对象import.java.sql.Statement;Statement state=null;try{state=conn.createStatement();}catch(SQLException e){e.printStackTrace();}import.java.sql. PreparedStatement;PreparedStatement pstate=null;try{pstate=conn.createStatement(sql);}catch(SQLException e){e.printStackTrace();}6、(1)单个执行sql语句try{state.executeUpdate(sql);}catch(SQLException e){e.printStackTrace();}//增删改合并,返回int java.util.Date temp=new SimpleDateFormat("yyyy-MM-dd").parse(birthday);java.sql.Date birth=new java.sql.Date(temp.getTime());pstate.setString(1, id);pstate.setString(2, sex);pstate.setInt(3,age);pstate.setFloat(4, score);pstate.setDate(5,birth);try{pstate.executeUpdate();}catch(SQLException e){e.printStackTrace();}//增删改合并,返回int或import java.sql.ResultSet;ResultSet rs=null;try{rs=state.executeQuery(sql);}catch(SQLException e){e.printStackTrace();}pstate.setString(1,”%”+id+”%”);pstate.setString(2,”%”+sex+”%”);pstate.setInt(3,”%”+age+”%”);try{rs=pstate.executeQuery();}catch(SQLException e){e.printStackTrace();}while(rs.next()){//依次取出。
ResultSet只能得到Int、String、Float、Date,至于Char用String获得String id=rs.getString(1);//取出id列的内容String sex=rs.getString(2);//sex在表中是字符型,取出时用String代替int age=rs.getInt(3);//取出password列的内容float score=rs.getFloat(4);//取出sex列的内容java.util.Date birth=rs.getDate(5);//取出birthday列的内容System.out.print("编号:" + id + ";");System.out.print("性别:" + sex + ";");System.out.print("年龄:" + age + ";");System.out.println("分数:" + score + ";");System.out.print("出生日:" + birth + ";")System.out.println("-----------------------");}(2)批量执行sql增删改语句try{state.addBatch(sql1);}catch(SQLException e){e.printStackTrace();}try{state.addBatch(sql2);}catch(SQLException e){e.printStackTrace();}try{state.executeBatch();}catch(SQLException e){e.printStackTrace();}//返回int[]pstate.setString(1,””+ id+””);pstate.setString(2, ””+ sex+””);pstate.setInt(3, ”+ age+”);pstate.setFloat(4, ”+ score+”);pstate.setDate(5, ””+ birth+””);try{pstate.addBatch();}catch(SQLException e){e.printStackTrace();}pstate.setString(1,””+ id2+””);pstate.setString(2, ””+ sex2+””);pstate.setInt(3, ”+ age2+”);pstate.setFloat(4, ”+ score2+”);pstate.setDate(5, ””+ birth2+””);try{pstate.addBatch();}catch(SQLException e){e.printStackTrace();}try{pstate.executeBatch();}catch(SQLException e){e.printStackTrace();}//返回int[]7、关闭链接try{rs.close();}catch(SQLException e){e.printStackTrace();}//创建了ResultSet实例对象才写此代码try{state.close();}catch(SQLException e){e.printStackTrace();}try{pstate.close();}catch(SQLException e){e.printStackTrace();}try{conn.close();}catch(SQLException e){e.printStackTrace();}附件1PreparedStatement接口:采用预处理操作,是Statement接口的子接口实际上,在正规的开发中,不会有人使用Statement接口的,因为Statement接口采用的是拼凑的SQL语句形式,可能造成SQL的注入漏洞。
比如,最早的国内的大部分站点,只要sql查询语句中输入单引号,站点就会完蛋。
与Statement不同的是,PreparedStatement在操作时:SQL语句中暂时不设置具体内容,是在得到PreparedStatement接口对象后,通过PreparedStatement接口对象调用setXxx等方法根据位置设置具体的内容,然后通过PreparedStatement接口对象调用executeUpdate()执行更新注意:正常情况下都使用java.util.Date表示日期,但是,在PreparedStatement中,SQL语句中的日期属性值必须使用java.sql.Date类型的java.util.Date u=new SimpleDateFormat(“yyyy-mm-dd”).parse(“2007-08-27”)java.sql.Date s=new java.sql.Date(u.getTime())冠:但是,查询的结果却可以直接接收,不必使用java.sql.Date接收后再转化了。