2023年8月3日发(作者:)
JAVA数据库的操作(增、删、改、查)JAVA数据库的操作(增、删、改、查)⼀、⾸先与数据库建⽴连接1static Connection con; //声明了⼀个全局变量⽅便使⽤1234567891public static void SQLConnect() { try { e(""); //加载数据库驱动 String url="jdbc:mysql://localhost:3306/*****?autoReconnect=true&useSSL=false"; //*****位置填写数据库的名字 String usename="root"; //数据库⽤户名 String psw="root"; //数据库密码 con = nection(url,usename,psw); //建⽴连接 } catch (ClassNotFoundException e) { // TODO Auto-generated catch block tackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block tackTrace(); } }⼆、数据库的增、删、改、查1.增PreparedStatement继承⾃Statement,都是接⼝。这⾥我们推荐使⽤PreparedStatement,来执⾏数据库的增加操作,⽽不⽤Statement。 因为PreparedStatement可以使⽤占位符,是预编译的,批处理⽐Statement效率⾼。PreparedStatement 是⼀个特殊的Statement对象,如果我们只是来查询或者更新数据的话,最好⽤PreparedStatement代替Statement,因为它有以下有点:1.简化Statement中的操作2.提⾼执⾏语句的性能3.可读性和可维护性更好4.安全性更好。5.使⽤PreparedStatement能够预防SQL注⼊攻击,所谓SQL注⼊,指的是通过把SQL命令插⼊到Web表单提交或者输⼊域名或者页⾯请求的查询字符串,最终达到欺骗服务器,达到执⾏恶意SQL命令的⽬的。注⼊只对SQL语句的编译过程有破坏作⽤,⽽执⾏阶段只是把输⼊串作为数据处理,不再需要对SQL语句进⾏解析,因此也就避免了类似select * from user where name=‘aa’ andpassword=‘bb’ or 1=1的sql注⼊问题的发⽣。①⾸先我们编写SQL语句1String insertSQL = "insert into stubase(id,name,sex,dep,math,eng) values (?,?,?,?,?,?)";②预编译1PreparedStatement stat = eStatement(insertSQL);③设置占位符的值需要设置整形数据就使⽤setInt()⽅法。 需要设置字符串数据就使⽤setString()⽅法。 ⽅法中的第⼀个参数是第⼏个占位符,从1开始。(1,100);ing(2,"String");ing(3,"String");ing(4,"String");(5,100);(6,100);④执⾏eUpdate();⑤完整代码1234567891 try { String insertSQL = "insert into stubase(id,name,sex,dep,math,eng) values (?,?,?,?,?,?)"; PreparedStatement stat = eStatement(insertSQL); (1,100); ing(2,"String"); ing(3,"String"); ing(4,"String"); (5,100); (6,100); eUpdate(); n(con); } catch (SQLException e) { // TODO Auto-generated catch block tackTrace(); }2.删与上述同理,⾸先我们编写SQL语句然后创建Statement对象(也可以⽤PreparedStatement,这⾥演⽰⼀下Statement的使⽤)最后执⾏。123 String deleteSQL = "delete from stubase where id=18000"; Statement stmt = Statement(); eUpdate(deleteSQL);3.改这⾥仍然使⽤的是PreparedStatement,但是我在写SQL语句时没有使⽤占位符,⽽是使⽤了转义字符,两者都可以,我本⼈也认为占位符⽐较⽅便,这⾥只是演⽰转义字符的使⽤。11121314try { String sql="update stubase set " + "name='"+e() +"',sex='"+() +"',dep='"+() +"',math="+h() +",eng="+()+" " +"where id="+(); PreparedStatement stat = eStatement(sql); eUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block tackTrace(); }4.查查相对⽐较⿇烦,增、删、改执⾏后的返回值位受影响的⾏数,⽽查询操作则会返回⼀张数据表。要对这张数据表进⾏操作,来获取值。①⾸先我们编写SQL语句这⾥我们查询全部1 String sql = "select * from stubase";②创建Statement对象⽤于执⾏SQL语句1 Statement stmt = Statement();③执⾏SQL语句1 ResultSet res = eQuery(sql);④遍历结果集res初始指向查询到的数据表的第⼀⾏的上⼀⾏。()会使指针移动⾄下⼀⾏,它的返回值位布尔类型(boolean)。如果下⼀⾏有数据那么返回值位true,否则为false。获取整形数据就使⽤getInt()⽅法。 获取字符串数据就使⽤getString()⽅法。 ⽅法中的参数是查询到的结果表的第⼏列,依旧从1开始。.可以在while循环中对获取的数据进⾏操作,例如添加到ArrayList中,⽅便我们的使⽤。12345678 while(()) { int id = (2); String name = ing(3); String sex = ing(4); String dep = ing(5);
int math = (6); int eng = (7); }⑤完整代码11 String sql = "select * from stubase"; Statement stmt = Statement(); ResultSet result = eQuery(sql); while(()) { int id = (2); String name = ing(3); String sex = ing(4); String dep = ing(5);
int math = (6); int eng = (7); }三、总结我们既可以⽤Statement,也可以⽤PreparedStatement。使⽤ Statement 对象。在对数据库只执⾏⼀次性存取的时侯,⽤ Statement 对象进⾏处理。PreparedStatement对象的开销⽐Statement⼤,对于⼀次性操作并不会带来额外的好处。PreparedStatement可以使⽤占位符。1、对于Statement1.执⾏查询操作时使⽤executeQuery(String sql),返回值为Resultset 类型。1Resultset res = executeQuery(String sql) ;2.执⾏增、删、改操作时使⽤executeUpdate(String sql) ,返回值是整形,意义为受影响的⾏数。1int res = executeUpdate(String sql) ;2、对于PreparedStatement1.执⾏查询操作时使⽤executeQuery( ),返回值为Resultset 类型。1Resultset res = executeQuery() ;2.执⾏增、删、改操作时使⽤executeUpdate( ) ,返回值是整形,意义为受影响的⾏数。1int res = executeUpdate() ;
2023年8月3日发(作者:)
JAVA数据库的操作(增、删、改、查)JAVA数据库的操作(增、删、改、查)⼀、⾸先与数据库建⽴连接1static Connection con; //声明了⼀个全局变量⽅便使⽤1234567891public static void SQLConnect() { try { e(""); //加载数据库驱动 String url="jdbc:mysql://localhost:3306/*****?autoReconnect=true&useSSL=false"; //*****位置填写数据库的名字 String usename="root"; //数据库⽤户名 String psw="root"; //数据库密码 con = nection(url,usename,psw); //建⽴连接 } catch (ClassNotFoundException e) { // TODO Auto-generated catch block tackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block tackTrace(); } }⼆、数据库的增、删、改、查1.增PreparedStatement继承⾃Statement,都是接⼝。这⾥我们推荐使⽤PreparedStatement,来执⾏数据库的增加操作,⽽不⽤Statement。 因为PreparedStatement可以使⽤占位符,是预编译的,批处理⽐Statement效率⾼。PreparedStatement 是⼀个特殊的Statement对象,如果我们只是来查询或者更新数据的话,最好⽤PreparedStatement代替Statement,因为它有以下有点:1.简化Statement中的操作2.提⾼执⾏语句的性能3.可读性和可维护性更好4.安全性更好。5.使⽤PreparedStatement能够预防SQL注⼊攻击,所谓SQL注⼊,指的是通过把SQL命令插⼊到Web表单提交或者输⼊域名或者页⾯请求的查询字符串,最终达到欺骗服务器,达到执⾏恶意SQL命令的⽬的。注⼊只对SQL语句的编译过程有破坏作⽤,⽽执⾏阶段只是把输⼊串作为数据处理,不再需要对SQL语句进⾏解析,因此也就避免了类似select * from user where name=‘aa’ andpassword=‘bb’ or 1=1的sql注⼊问题的发⽣。①⾸先我们编写SQL语句1String insertSQL = "insert into stubase(id,name,sex,dep,math,eng) values (?,?,?,?,?,?)";②预编译1PreparedStatement stat = eStatement(insertSQL);③设置占位符的值需要设置整形数据就使⽤setInt()⽅法。 需要设置字符串数据就使⽤setString()⽅法。 ⽅法中的第⼀个参数是第⼏个占位符,从1开始。(1,100);ing(2,"String");ing(3,"String");ing(4,"String");(5,100);(6,100);④执⾏eUpdate();⑤完整代码1234567891 try { String insertSQL = "insert into stubase(id,name,sex,dep,math,eng) values (?,?,?,?,?,?)"; PreparedStatement stat = eStatement(insertSQL); (1,100); ing(2,"String"); ing(3,"String"); ing(4,"String"); (5,100); (6,100); eUpdate(); n(con); } catch (SQLException e) { // TODO Auto-generated catch block tackTrace(); }2.删与上述同理,⾸先我们编写SQL语句然后创建Statement对象(也可以⽤PreparedStatement,这⾥演⽰⼀下Statement的使⽤)最后执⾏。123 String deleteSQL = "delete from stubase where id=18000"; Statement stmt = Statement(); eUpdate(deleteSQL);3.改这⾥仍然使⽤的是PreparedStatement,但是我在写SQL语句时没有使⽤占位符,⽽是使⽤了转义字符,两者都可以,我本⼈也认为占位符⽐较⽅便,这⾥只是演⽰转义字符的使⽤。11121314try { String sql="update stubase set " + "name='"+e() +"',sex='"+() +"',dep='"+() +"',math="+h() +",eng="+()+" " +"where id="+(); PreparedStatement stat = eStatement(sql); eUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block tackTrace(); }4.查查相对⽐较⿇烦,增、删、改执⾏后的返回值位受影响的⾏数,⽽查询操作则会返回⼀张数据表。要对这张数据表进⾏操作,来获取值。①⾸先我们编写SQL语句这⾥我们查询全部1 String sql = "select * from stubase";②创建Statement对象⽤于执⾏SQL语句1 Statement stmt = Statement();③执⾏SQL语句1 ResultSet res = eQuery(sql);④遍历结果集res初始指向查询到的数据表的第⼀⾏的上⼀⾏。()会使指针移动⾄下⼀⾏,它的返回值位布尔类型(boolean)。如果下⼀⾏有数据那么返回值位true,否则为false。获取整形数据就使⽤getInt()⽅法。 获取字符串数据就使⽤getString()⽅法。 ⽅法中的参数是查询到的结果表的第⼏列,依旧从1开始。.可以在while循环中对获取的数据进⾏操作,例如添加到ArrayList中,⽅便我们的使⽤。12345678 while(()) { int id = (2); String name = ing(3); String sex = ing(4); String dep = ing(5);
int math = (6); int eng = (7); }⑤完整代码11 String sql = "select * from stubase"; Statement stmt = Statement(); ResultSet result = eQuery(sql); while(()) { int id = (2); String name = ing(3); String sex = ing(4); String dep = ing(5);
int math = (6); int eng = (7); }三、总结我们既可以⽤Statement,也可以⽤PreparedStatement。使⽤ Statement 对象。在对数据库只执⾏⼀次性存取的时侯,⽤ Statement 对象进⾏处理。PreparedStatement对象的开销⽐Statement⼤,对于⼀次性操作并不会带来额外的好处。PreparedStatement可以使⽤占位符。1、对于Statement1.执⾏查询操作时使⽤executeQuery(String sql),返回值为Resultset 类型。1Resultset res = executeQuery(String sql) ;2.执⾏增、删、改操作时使⽤executeUpdate(String sql) ,返回值是整形,意义为受影响的⾏数。1int res = executeUpdate(String sql) ;2、对于PreparedStatement1.执⾏查询操作时使⽤executeQuery( ),返回值为Resultset 类型。1Resultset res = executeQuery() ;2.执⾏增、删、改操作时使⽤executeUpdate( ) ,返回值是整形,意义为受影响的⾏数。1int res = executeUpdate() ;
发布评论