wordpress免费托管,麻城seo,射阳房产网,关键词推广优化app目录: 1.JDBC简介2.Statement 和 PreparedStatement 的区别3.导入连接数据库Jar包4.JDBC操作4.1 Statement操作使用Statement“添加数据”使用Statement“删除数据”使用Statement“修改数据”使用Statement“查询数据” 4.2 PreparedStatement操作使用PreparedStatement“添加… 目录: 1.JDBC简介2.Statement 和 PreparedStatement 的区别3.导入连接数据库Jar包4.JDBC操作4.1 Statement操作使用Statement“添加数据”使用Statement“删除数据”使用Statement“修改数据”使用Statement“查询数据” 4.2 PreparedStatement操作使用PreparedStatement“添加数据”使用PreparedStatement“删除数据”使用PreparedStatement“修改数据”使用PreparedStatement“查询数据” 1.JDBC简介 在JSP中可以写Java代码很明显可以通过Java代码来访问数据库。 在Java技术系列中访问数据库的技术叫 ”JDBC“它提供了一系列的API让Java语言编写的代码能连接数据库对数据库的数据进行增加、删除、修改和查询。 与JDBC有的API存放在java.sql宝中主要包括以下类和接口。 java.sql.Connection : 负责连接数据库。 java.sql.Statement : 负责执行数据库的sql语句不能参数化查询一般只用其的增、删、改功能 java.sql.PreparedStatement : 负责执行数据库的sql语句 (能 参数化查询/动态查询其的增、删、改、查功能都常用)。 java.sql.ResultSe : 负责存放查询结果 (存放结果集)。 2.Statement 和 PreparedStatement 的区别 参数化查询 / 动态查询 Statement 和 PreparedStatement 都能对数据库进行增、删、改、查但两者又有所不同。 PreparedStatement支持参数化查询可避免SQL注入攻击。PreparedStatement可以将参数作为占位符传递到SQL查询中然后通过setXXX()将参数值绑定到占位符上这是PreparedStatement的参数化查询 / 动态查询。先有占位符后通过setXXX( )方法将参数与占位符替换成功填入值 Statement不支持参数化查询如果你需要动态添加数据 / 动态查询必须使用拼接字符串的方式来创建SQL语句容易导致SQL注入攻击。 所以一般不用Statement来完成动态查询功能用PreparedStatement来完成动态查询功能。 性能 : 一般来说 PreparedStatement的性能优于Statement。 因为PreparedStatement的sql语句在执行前已经编译过而Statement的SQL语句每次执行都需要编译所以性能比较差。 代码可读性 : 由于PreparedStatement支持参数化参数使的代码更加清晰和易于维护也使代码更加模块化、易于理解。而Statement的SQL语句中混杂着数据代码可读性较差。 3.导入连接数据库Jar包 在JSP中连接数据库时除了要导入 mysql-connector-java.jar 包 一般还要导入关于JSP的 jsp-api.jar包。 4.JDBC操作
4.1 Statement操作
使用Statement“添加数据”
% page importjava.sql.* %
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleJSP中通过Statement添加数据/title
/head
body
%//1.加载驱动Class.forName(com.mysql.jdbc.Driver);String url jdbc:mysql://localhost:3306/a3?useUnicodetruecharacterEncodingUTF-8;//2获得连接数据库的Connection对象Connection conn DriverManager.getConnection(url,root, root);//3.获得操作数据库的Statement对象Statement stat conn.createStatement();//sql语句String sql insert into book(bno,bname,author,publishment) values(1,JavaWeb开发,zhangsan,北京出版社);//4.执行该语句int i stat.executeUpdate(sql);out.print(成功添加i行);//5.关闭资源stat.close();conn.close();
%
/body
/html使用Statement“删除数据”
% page importjava.sql.DriverManager %
% page importjava.sql.Connection %
% page importjava.sql.Statement %
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleJSP中通过Statement删除数据/title
/head
body
%//1.通过反射加载驱动Class.forName(com.mysql.jdbc.Driver);//urlString url jdbc:mysql://localhost:3306/a3?useUnicodetruecharacterEncodingUTF-8;//2.通过connection对象连接数据库Connection conn DriverManager.getConnection(url, root, root);//3.通过Statement对象操作数据库Statement stat conn.createStatement();String sql delete from book where bno 1;//4.调用方法操作数据库int i stat.executeUpdate(sql);out.print(成功删除i行数据);//关闭资源stat.close();conn.close();
%
/body
/html使用Statement“修改数据”
% page importcom.mysql.jdbc.Driver %
% page importjava.sql.DriverManager %
% page importjava.sql.Connection %
% page importjava.sql.Statement %
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleJSP中通过Statement修改数据/title
/head
body
%//1.通过反射加载驱动Class.forName(com.mysql.jdbc.Driver);//urlString url jdbc:mysql://localhost:3306/a3?useUnicodetruecharacterEncodingUTF-8;//2.通过connection对象连接数据库Connection conn DriverManager.getConnection(url, root, root);//3.通过Statement对象操作数据库Statement stat conn.createStatement(); String sql update book set bname JavaJavaJava where bno 1;//4.调用方法操作数据库int i stat.executeUpdate(sql);out.print(成功修改i行数据);//关闭资源stat.close();conn.close();
%
/body
/html使用Statement“查询数据”
% page importcom.mysql.jdbc.Driver %
% page importjava.sql.DriverManager %
% page importjava.sql.Connection %
% page importjava.sql.Statement %
% page importjava.sql.ResultSet %
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleJSP中通过Statement查询数据/title
/head
body
%//1.通过反射加载驱动Class.forName(com.mysql.jdbc.Driver);//urlString url jdbc:mysql://localhost:3306/a3?useUnicodetruecharacterEncodingUTF-8;//2.通过connection对象连接数据库Connection conn DriverManager.getConnection(url, root, root);//3.通过Statement对象操作数据库Statement stat conn.createStatement(); //Statement : 不能参数化查询String sql select * from book where bno 1;//4.调用方法操作数据库ResultSet rs stat.executeQuery(sql);while (rs.next()) {out.print(rs.getString(1));out.print(rs.getString(2));out.print(rs.getString(3));out.print(rs.getString(4));}//关闭资源stat.close();conn.close();
%
/body
/html4.2 PreparedStatement操作
使用PreparedStatement“添加数据”
% page importjava.sql.DriverManager %
% page importjava.sql.Connection %
% page importjava.sql.PreparedStatement %
% page importjava.sql.ResultSet %
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleadd1.jsp/title
/head
body
%//1.通过反射连接驱动Class.forName(com.mysql.jdbc.Driver);String url jdbc:mysql://localhost:3306/a3?useUnicodetruecharacterEncodingUTF-8;//2.获得连接数据库的Connection对象Connection conn DriverManager.getConnection(url, root, root);//3.获得操作数据的PreparedStatement对象 (PreparedStatement对象可进行参数化设置)String sql insert into book values(?,?,?,?);PreparedStatement ps conn.prepareStatement(sql);//设置参数(补充占位符)ps.setString(1,111);ps.setString(2,诗词鉴赏);ps.setString(3,俞平伯);ps.setString(4,陕西师范大学出版社);int i ps.executeUpdate();out.print(成功添加i行数据);
%
/body
/html使用PreparedStatement“删除数据”
% page importjava.sql.DriverManager %
% page importjava.sql.Connection %
% page importjava.sql.PreparedStatement %
% page importjava.sql.ResultSet %
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitledelete1.jsp/title
/head
body
%//1.通过反射连接驱动Class.forName(com.mysql.jdbc.Driver);String url jdbc:mysql://localhost:3306/a3?useUnicodetruecharacterEncodingUTF-8;//2.获得连接数据库的Connection对象Connection conn DriverManager.getConnection(url, root, root);//3.获得操作数据的PreparedStatement对象 (PreparedStatement对象可进行参数化设置)String sql delete from book where bno ?;PreparedStatement ps conn.prepareStatement(sql);//设置参数(补充占位符)ps.setString(1,111);//4.执行sql操作int i ps.executeUpdate();out.print(成功删除i行数据);
%
/body
/html使用PreparedStatement“修改数据”
% page importjava.sql.DriverManager %
% page importjava.sql.Connection %
% page importjava.sql.PreparedStatement %
% page importjava.sql.ResultSet %
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleupdate1.jsp/title
/head
body
%//1.通过反射连接驱动Class.forName(com.mysql.jdbc.Driver);String url jdbc:mysql://localhost:3306/a3?useUnicodetruecharacterEncodingUTF-8;//2.获得连接数据库的Connection对象Connection conn DriverManager.getConnection(url, root, root);//3.获得操作数据的PreparedStatement对象 (PreparedStatement对象可进行参数化设置)String sql update book set bname ? where bno ?;PreparedStatement ps conn.prepareStatement(sql);//设置参数(补充占位符)ps.setString(1,JavaWeb);ps.setString(2,112233);//4.执行sql语句int i ps.executeUpdate();out.print(成功修改i行数据);
%
/body
/html使用PreparedStatement“查询数据”
% page importjava.sql.DriverManager %
% page importjava.sql.Connection %
% page importjava.sql.PreparedStatement %
% page importjava.sql.ResultSet %
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleselect1.jsp/title
/head
body
%//1.通过反射连接驱动Class.forName(com.mysql.jdbc.Driver);String url jdbc:mysql://localhost:3306/a3?useUnicodetruecharacterEncodingUTF-8;//2.获得连接数据库的Connection对象Connection conn DriverManager.getConnection(url, root, root);//3.获得操作数据的PreparedStatement对象 (PreparedStatement对象可进行参数化设置)String sql select * from book where bno ?;PreparedStatement ps conn.prepareStatement(sql);//设置参数(补充占位符)ps.setString(1,0009999112);//4.获得结果集对象ResultSet rs ps.executeQuery(); //返回值为结果集对象//5.解析结果集对象while (rs.next()) { //如果有数据String bno rs.getString(1);String bname rs.getString(2);String author rs.getString(3);String publishment rs.getString(4);out.print(bno bname author publishment);}
%
/body
/html