JDBC 增删改查代码 过滤查询语句
package test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class CRUD {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
create();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
static void create() throws SQLException {
Connection conn = null;
Statement st = null;
PreparedStatement ps =null;//这种statement可以用来过滤数据库查询语句,防止SQL注入
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
//3,Statement用于“运送”sql语句和sql语句执行结果
String paraSql = “select * from user hwere name=?”;
//对于上面这种带?的sql可以用下面这个办法来获取statement
ps=conn.prepareStatement(sql);//这种创建连接的办法虽然安全但是创建的时候比较耗时
String paraName = “’’ or 1 or ‘”;
ps.setString(1,paraName);
rs=ps.executeQuery();//这样是查询不到结果的,因为没有一个用户名叫做’’ or 1 or ‘
st = conn.createStatement();
String sql = "insert into user(name,birthday,money) values ('name1','1987-01-01','400')";
String sql1 = "update user set money=money+10";
String sql2 = "delete from user where id>5";
//4,执行sql
int count = st.executeUpdate(sql1);//增删改全用这个,返回值是受影响的行数
rs = st.executeQuery("select * from user");
while(rs.next()) {
//也可以使用列名,使用列号要从1开始
//for(int i = 1)
int i = rs.getMetaData().getColumnCount(); //获取列数
for(int j=1;j<=i;j++)
System.out.print(rs.getObject(j)+"\t");
System.out.println();
}
System.out.println(count);
} finally {
JdbcUtils.free(rs, st, conn);
}
}
}
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/* 简陋工具类 */
public final class JdbcUtils {
private static String url="jdbc:mysql://localhost:3306/world";
private static String user = "root";
private static String password="mysql";
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
private JdbcUtils() {}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,user,password);
}
public static void free(ResultSet rs,Statement st,Connection conn) {
try {
if (rs != null) {
rs.close();
}
}catch(SQLException e) {
e.printStackTrace();
}
finally {
try {
if (st != null) {
st.close();
}
} catch(SQLException e){
e.printStackTrace();
} finally {
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
JDBC 增删改查代码 过滤查询语句的更多相关文章
- 最简单的jsp+servlet的增删改查代码
package ceet.ac.cn.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.s ...
- JDBC增删改查,PreparedStatement和Statement的区别
此篇是在上一篇的基础上使用PreparedStatement对象来实现JDBC增删改查的 具体工具类JDBCTools和实现类和配置文件在上一篇Statement对象实现的时候有写. 上一篇地址htt ...
- java DMO及增删改查代码的自动生成
在web开发过程中,尤其是后台管理系统的开发中,少不了增删改成的基础操作,原来我自己的做法是一份一份的拷贝粘贴,然后修改其中的不同,然而这样既枯燥无味又浪费了大量的时间,所以根据自己项目结构的特点写了 ...
- SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学、字符串、日期时间)函数[转]
SQL server 创建 修改表格 及表格基本增删改查 及 高级查询 及 (数学.字符串.日期时间)函数 --创建表格 create table aa ( UserName varchar(50 ...
- JDBC增删改查和查唯一的完整代码
第一部分代码(实体类) package com.wf.entity; public class Hehe{ private int hehe_id; private String hehe_name; ...
- jdbc 增删改查以及遇见的 数据库报错Can't get hostname for your address如何解决
最近开始复习以前学过的JDBC今天肝了一晚上 来睡睡回笼觉,长话短说 我们现在开始. 我们先写一个获取数据库连接的jdbc封装类 以后可以用 如果不是maven环境的话在src文件下新建一个db.pr ...
- jdbc增删改查进行封装
jdbc封装 1 dao (代码分层) com.aaa.dao 存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据 com.aaa.servlet 存放servle ...
- 【gridview增删改查】数据库查询后lodop打印
ASP.NET中使用gridview可以很容易的把需要的数据动态显示在前台,还可以在表格里加入列进行增删改查,每次点击的时候重新加载数据,gridview也提供了分页等功能,还有一些模版让显示在前台的 ...
- 增删改查- 万能map- 模糊查询
1.编写接口 2.编写对应的mapper种的sql语句 3.测试 接口 public interface UserDao { List<User> getUserList(); //根据I ...
随机推荐
- [转]Intent和PendingIntent的区别
intent英文意思是意图,pending表示即将发生或来临的事情. PendingIntent这个类用于处理即将发生的事情.比如在通知Notification中用于跳转页面,但不是马上跳转. Int ...
- April Fools Day Contest 2016 F. Ace It!
F. Ace It! 题目连接: http://www.codeforces.com/contest/656/problem/F Description Input The only line of ...
- MySQL5.7添加授权账号及修改默认端口
1.修改默认端口 打开配置文件 vim /etc/my.cnf 分别添加端口在client.mysql节点 [client] port=15099 [mysqld] port=15099 需要注意se ...
- Android开发:ListView加上长按事件
为ListView加上长按事件 lvMain.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public b ...
- 对 dpif_class 结构体的一点认识
类 dpif_class 抽象的是OVS交换机用户空间和内核层datapath的通信接口(通过netlink),分层是出于性能和生产效率的考虑,通过接口dpif_class,用户层ovs-v ...
- JSP页面乱码全解析
乱码指的是中文乱码. 一.POST乱码 由于两个页面都是用UTF-8编码,但是参数的传输默认是ISO-8859-1,这时候可以在接受参数之前 request.setCharacterEncoding( ...
- JS返回数组种类和个数(面试常问)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 软件版本GA,RC,alpha,beta,Build 含义
(1)RC:(Release Candidate) Candidate是候选人的意思,用在软件上就是候选版本.Release.Candidate.就是发行候选版本.和Beta版最大的差别在于Beta阶 ...
- 使MySQL对表名不区分大小写
今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢? 后来请教了一个老师才搞定,原来是LINUX下的MYSQL默认是要区 ...
- security with restful
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...