JDBC 增删改查代码 过滤查询语句
2013-12-05 11:59
197 查看
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();
}
}
}
}
}
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();
}
}
}
}
}
相关文章推荐
- sparkSQL里 sql语句,dataframe,Thrift Server JDBC都可以实现对数据的查询,过滤等操作, 哪这3种情况分别是什么情况下使用
- Sql语句与存储过程查询数据的性能测试实现代码
- [置顶] 【mysql 增删改查】MySql数据库的查询、删除、增加、修改语句
- codeTool代码自动生成工具(参数类sql数据增删改查语句,实体类,接口代码)
- 后台代码对iBatis配置文件中具体的sql语句的调用实现(被封装的增删改查)
- ElasticSearch常用的查询过滤语句
- 天气预报,MYSQL之JDBC查询模块实现(代码)和简易插入模块实现(代码)以及PREPAREDSTATEMENT插入模块实现(代码)
- jdbc结合sqlserver的javaWeb工程的分页查询共通操作代码
- 搜索引擎solr(二)--查询语句及在java中进行增删改查
- [代码实例][C语言][sqlite3]用SQL语句查询数据库的实例
- 各种数据库 不同查询语句代码
- jdbc中想同时使用两个sql查询语句,必须创建两套statement和resultSet
- 【javaJDBC基础】【简单的入门语句代码】
- java jdbc调用oracle的函数或过程返回SQL语句查询的结果集
- 使用jdbc向数据库中插入多条记录,探究有索引和没有索引的查询速度的代码
- 多重查询SQL语句解决方案及代码
- Sql查询语句过滤重复的数据
- Sql语句与存储过程查询数据的性能测试实现代码
- ElasticSearch 常用的查询过滤语句
- ElasticSearch 常用的查询过滤语句