jdbc+executeQuery实现数据库查询
2017-07-23 21:43
459 查看
一、使用Statement
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class testQuery {
//通过status进行查询
public static void testQuery(String status){
//声明连接对象,语句对象,以便可以在finally中关闭
Connection conn=null;
Statement stmt=null;
try{
//加载驱动类,不同数据库软件驱动类不同
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager获得连接对象,其中url每个数据库不同
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf8",
"root","1234");
//使用连接对象,获得语句对象Statement
stmt=conn.createStatement();
String sql="select * from user where status="+status;
//执行查询,返回结果集
ResultSet rs=stmt.executeQuery(sql);
//使用next方法,迭代结果集,使用getXXX方法,获得每条记录的字段值
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+
rs.getString(4)+" "+rs.getString(5));
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}finally{
//将语句对象,连接对象,进行关闭
if(stmt!=null){
try{
stmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
public static void main(String[] args){
testQuery("0");
}
}
二、使用PreparedStatement
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class testQuery {
//通过status进行查询
public static void testQuery(String pwd,String status){
//声明连接对象,语句对象,以便可以在finally中关闭
Connection conn=null;
PreparedStatement pstmt=null;
try{
//加载驱动类,不同数据库软件驱动类不同
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager获得连接对象,其中url每个数据库不同
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf8",
"root","1234");
//使用预编译语句PreparedStatement
String sql="select * from user where pwd=? and status=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, pwd);
pstmt.setString(2, status);
//执行查询,返回结果集
ResultSet rs=pstmt.executeQuery();
//使用next方法,迭代结果集,使用getXXX方法,获得每条记录的字段值
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+
rs.getString(4)+" "+rs.getString(5));
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}finally{
//将语句对象,连接对象,进行关闭
if(pstmt!=null){
try{
pstmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
public static void main(String[] args){
testQuery("2","0");
}
}
心得:
1、PreparedStatement中setString后面跟的序数是问号的序数,而不是在数据库中列名的序数;
2、注意区别:ResultSet rs=pstmt.executeQuery()和ResultSet rs=stmt.executeQuery(sql);
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class testQuery {
//通过status进行查询
public static void testQuery(String status){
//声明连接对象,语句对象,以便可以在finally中关闭
Connection conn=null;
Statement stmt=null;
try{
//加载驱动类,不同数据库软件驱动类不同
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager获得连接对象,其中url每个数据库不同
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf8",
"root","1234");
//使用连接对象,获得语句对象Statement
stmt=conn.createStatement();
String sql="select * from user where status="+status;
//执行查询,返回结果集
ResultSet rs=stmt.executeQuery(sql);
//使用next方法,迭代结果集,使用getXXX方法,获得每条记录的字段值
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+
rs.getString(4)+" "+rs.getString(5));
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}finally{
//将语句对象,连接对象,进行关闭
if(stmt!=null){
try{
stmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
public static void main(String[] args){
testQuery("0");
}
}
二、使用PreparedStatement
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class testQuery {
//通过status进行查询
public static void testQuery(String pwd,String status){
//声明连接对象,语句对象,以便可以在finally中关闭
Connection conn=null;
PreparedStatement pstmt=null;
try{
//加载驱动类,不同数据库软件驱动类不同
Class.forName("com.mysql.jdbc.Driver");
//使用DriverManager获得连接对象,其中url每个数据库不同
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf8",
"root","1234");
//使用预编译语句PreparedStatement
String sql="select * from user where pwd=? and status=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, pwd);
pstmt.setString(2, status);
//执行查询,返回结果集
ResultSet rs=pstmt.executeQuery();
//使用next方法,迭代结果集,使用getXXX方法,获得每条记录的字段值
while(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+
rs.getString(4)+" "+rs.getString(5));
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}finally{
//将语句对象,连接对象,进行关闭
if(pstmt!=null){
try{
pstmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
public static void main(String[] args){
testQuery("2","0");
}
}
心得:
1、PreparedStatement中setString后面跟的序数是问号的序数,而不是在数据库中列名的序数;
2、注意区别:ResultSet rs=pstmt.executeQuery()和ResultSet rs=stmt.executeQuery(sql);
相关文章推荐
- Jdbc--实现对数据库的查询,更改,删除,添加等方法
- jdbc操作数据库实现查询产品、增加产品库存量例子
- JDBC实现数据库的几种基本操作(查询,分页查询,根据关键字进行查询以及插入数据)
- 在线音乐网站---(could not execute query)数据库查询错误
- 用JDBC实现简单的数据库查询的一个例子
- JDBC实现增删改查、模糊查询、分页查询、子查询以及体现单例设计模式连接数据库
- 重点:java后端直接连接数据库实现查询获取结果 jdbc
- jdbc pstmt.executeQuery() 程序中断引起的问题(数据库postgrelsql)
- 初学JDBC(五)-使用ResultSet结果集对数据库表内容实现查询操作
- [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现
- 从数据库方面解决org.hibernate.exception.JDBCConnectionException:could not execute query
- 数据库长时间未操作自己断开org.hibernate.exception.JDBCConnectionException: could not execute query
- JDBC连接数据库并且实现增删改和查询
- JDBC操作数据库之分页查询
- SpringData 学习(4)—— 使用 @Query 注解实现查询
- [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Query查询定位中心功能(七)
- Android 中数据库查询方法query()中的selectionArgs的用法
- Java使用JDBC连接数据库的实现方法
- ajax实现动态从数据库模糊查询显示到下拉框中(ajax方法返回Dataset的例子)
- 数据库性能优化的五种方案(mycat,基于阿里coba开源的数据库中间件,很容易实现分库分表、主从切换功能。另一个当当网开源的一个库 sharding-jdbc)