数据库查询
Posted 冷的锋刃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库查询相关的知识,希望对你有一定的参考价值。
package net.jiaxiang.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import net.jiaxiang.entity.Book;
public class ChaXunShuJu {
//【向表中插入数据==添加数据】
public int addList(Book b) throws ClassNotFoundException, SQLException{
LianJieKu ljk=new LianJieKu();//new实例化连接类
Connection cn=ljk.openonn();//调用链接库方法
String sql = "insert into tb_books(name,price,bookCount,author) values(?,?,?,?)";//添加图书信息的SQL语句
PreparedStatement ps=cn.prepareStatement(sql);// 获取PreparedStatement 占位符
ps.setString(1, b.getName());// 对SQL语句中的第1个参数赋值
ps.setDouble(2, b.getPrice());// 对SQL语句中的第2个参数赋值
ps.setInt(3,b.getBookCount());// 对SQL语句中的第3个参数赋值
ps.setString(4, b.getAuthor());// 对SQL语句中的第4个参数赋值
int row=ps.executeUpdate();// 执行更新操作,返回所影响的行数
return row;// 判断返回更新的是否更新成功
}
//【查询表中的所有数据】
public List<Book>listbook() throws ClassNotFoundException, SQLException{
List<Book> list=new ArrayList<Book>();//创建ArrayList列表
LianJieKu ljk=new LianJieKu();//new实例化连接类
//【方法一】
String sql="select * from tb_books";
/* Connection cn=ljk.openonn();//直接调用openonn方法返回数据库的链接。
PreparedStatement ps=cn.prepareStatement(sql);
ResultSet rs=ps.executeQuery();//结果集对象rest
*/
//【方法二】
Connection cn=ljk.openonn();//调用链接库方法
Statement st=cn.createStatement();//创建一个不带参数的方法 为一条Sql语句生成执行计划
ResultSet rs=st.executeQuery("select * from tb_books");//利用st执行语句,结果防到结果集.
while(rs.next()){//循环是每一条语句
Book bk=new Book();//实例化book对象
bk.setId(rs.getInt("id"));//对id属性赋值
bk.setName(rs.getString("name"));//对name属性赋值
bk.setPrice(rs.getDouble("price"));//对price属性赋值
bk.setBookCount(rs.getInt("bookCount"));//对bookCount属性赋值
bk.setAuthor(rs.getString("author"));//对author属性赋值
list.add(bk); //将图书信息添加到集合中
}
rs.close(); //关闭ResultSet
st.close(); //关闭Statement
cn.close(); //关闭Connection
return list; //返回列表参数
}
//【查询含不确定字段的数值】
public List<Book> ListbookString(String text) throws ClassNotFoundException, SQLException { //查询书籍名称含有a串的书籍 这里面可以是多行
List<Book> list=new ArrayList<Book>();//创建ArrayList列表
LianJieKu ljk=new LianJieKu();//new实例化连接类
Connection cn=ljk.openonn();//调用连接库方法
Statement st=cn.createStatement();//创建一个不带参数的方法 为一条Sql语句生成执行计划
//【这一句【可能是】在mysql】中使用的模糊查询 ResultSet rs=st.executeQuery("select * from tb_books where name like ‘%‘+" + textname + "+‘%‘"); //利用st执行语句,结果防到结果集.
// 【这表示着 是在SQL server】中的语句代码
// select * from tb_books where name like ‘%ps%‘
// select * from tb_books where name like ‘%‘+‘q‘+‘%‘
//【这一句【可能是】在SQL server】中使用的模糊查询 这里面不能进行【+号】进行连接 ‘%"+textname+"%‘符号要严格
ResultSet rs=st.executeQuery("select * from tb_books where name like ‘%"+text+"%‘");//利用st执行语句,结果防到结果集.
while(rs.next()){
Book bk=new Book();
bk.setId(rs.getInt("id"));
bk.setName(rs.getString("name"));
bk.setPrice(rs.getDouble("price"));
bk.setBookCount(rs.getInt("bookCount"));
bk.setAuthor(rs.getString("author"));
list.add(bk);
}
rs.close();
st.close();
cn.close();
return list;
}
//【查询ID号的数据】
public Book ListbookInt(int a) throws ClassNotFoundException, SQLException {//查询(输入的ID)编号书籍信息 这里面只能是一行
Book bk=new Book();
LianJieKu ljk=new LianJieKu();//new实例化连接类
Connection cn=ljk.openonn();//调用链接库方法
Statement st=cn.createStatement();//创建一个不带参数的方法 为一条Sql语句生成执行计划
ResultSet rs=st.executeQuery("select * from tb_books where id=" + a); //利用st执行语句,结果防到结果集.
if(rs.next()){
bk.setId(rs.getInt("id"));
bk.setName(rs.getString("name"));
bk.setPrice(rs.getDouble("price"));
bk.setBookCount(rs.getInt("bookCount"));
bk.setAuthor(rs.getString("author"));
}
rs.close();
st.close();
cn.close();
return bk;
}
//【修改数据】
public int XiuGaiList(Book b) throws ClassNotFoundException, SQLException{
LianJieKu ljk=new LianJieKu();//new实例化连接类
Connection cn=ljk.openonn();//调用链接库方法
String sql="update tb_books set name=?,price=?,bookCount=?,author=? where id=?";//更新数据条件是ID号
PreparedStatement ps=cn.prepareStatement(sql);// 获取PreparedStatement 占位符
ps.setString(1, b.getName());// 对SQL语句中的第1个参数赋值
ps.setDouble(2, b.getPrice());// 对SQL语句中的第2个参数赋值
ps.setInt(3,b.getBookCount());// 对SQL语句中的第3个参数赋值
ps.setString(4, b.getAuthor());// 对SQL语句中的第4个参数赋值
ps.setInt(5, b.getId());
int row=ps.executeUpdate();// 执行更新操作,返回所影响的行数 注意这里面是不能进行返回参数
ps.close(); //关闭PreparedStatement 占位符
cn.close(); //关闭Connection
return row;// 判断返回更新的是否更新成功 这里面进行返回的是无效的
}
//【删除数据方法三】 使用的是占位符,采用带参数的方法
public int ShanChuList(int id) throws ClassNotFoundException, SQLException{
LianJieKu ljk=new LianJieKu();//new实例化连接类
Connection cn=ljk.openonn();//调用链接库方法
String sql="delete from tb_books where id=?";//删除一行数据
PreparedStatement ps=cn.prepareStatement(sql);// 获取PreparedStatement 占位符
ps.setInt(1,id);// 对SQL语句中的第3个参数赋值
int row=ps.executeUpdate();// 执行更新操作,返回所影响的行数
ps.close(); //关闭PreparedStatement 占位符
cn.close(); //关闭Connection
return row;// 判断返回更新的是否更新成功
}
//【删除方法一】:这是直接采用 实体类进行传递参数 进行删除
public int DeleteList(Book book) throws ClassNotFoundException, SQLException{
LianJieKu ljk=new LianJieKu();//new实例化连接类
Connection cn=ljk.openonn();//调用链接库方法
String sql="delete from t_bl_canton_code where CTN_CODE="+book.getId();//删除传递过来的那一行数据
Statement st=cn.createStatement();//创建的是一个不带参数的的 方法
int row=st.executeUpdate(sql);// 执行更新操作,返回所影响的行数
st.close(); //关闭PreparedStatement 占位符
cn.close(); //关闭Connection
return row;// 判断返回更新的是否更新成功
}
//【删除方法二】采用传递过来的参数ID进行 删除
public int deleteList(long listID) throws ClassNotFoundException, SQLException{
LianJieKu ljk=new LianJieKu();//new实例化连接类
Connection cn=ljk.openonn();//调用链接库方法
String sql="delete from t_bl_canton_code where CTN_CODE="+listID;//删除传递过来的那一行数据
Statement st=cn.createStatement();//创建的是一个不带参数的的 方法
int row=st.executeUpdate(sql);// 执行更新操作,返回所影响的行数
st.close(); //关闭PreparedStatement 占位符
cn.close(); //关闭Connection
return row;// 判断返回更新的是否更新成功
}
}
以上是关于数据库查询的主要内容,如果未能解决你的问题,请参考以下文章