请教我的asp网页,修改链接数据库时,修改时只会修改第一行的记录,为什么?部分源代码如下

请教我的asp网页,修改链接数据库时,修改时只会修改第一行的记录,为什么?部分源代码如下,第1张

两段代码都没发到关键,

rs_SQL="select * from student where id="&request("id")

如果你数据库中ID的值是唯一的,那么只会查到最多一条记录,所以只能修改一条并不奇怪.

第二段代码,虽然会返回表中所有记录,但你并没有执行任何更新动作,查询返回之后就关闭了,所以一条也不会被修改.

我给你我原来写过的吧。很久以前的了。只给你连接数据库这些,其他的你自己看着写吧。

下面是我当初写的其中一个dao类,有注释。你看看,模仿着写吧,肯定能写出来。.

package com.dao

import java.sql.Connection

import java.sql.Date

import java.sql.DriverManager

import java.sql.PreparedStatement

import java.sql.ResultSet

import java.sql.SQLException

import java.sql.Statement

import java.util.List

import javax.servlet.jsp.jstl.sql.Result

import javax.servlet.jsp.jstl.sql.ResultSupport

import com.tool.BaseTool

public class BillDAO {

// 数据库连接

private Connection con

// 数据库SQL语句执行者对象

private Statement stmt

// 数据库SQL语句执行者对象

private PreparedStatement pstmt

// 数据库SQL查询结果集

private ResultSet rs

// 打开数据库连接

private void openConnection() {

try {

// 加载数据库驱动

Class.forName("oracle.jdbc.driver.OracleDriver")

// 获得数据库连接

con = DriverManager.getConnection(

"jdbc:oracle:thin:@localhost:1521:orcllib", "zxl", "zxl")

} catch (ClassNotFoundException e) {

e.printStackTrace()

} catch (SQLException e) {

e.printStackTrace()

}

}

// 关闭数据库连接及资源

private void closeConnection() {

if (rs != null) {

try {

rs.close()

} catch (SQLException e) {

e.printStackTrace()

}

}

if (stmt != null) {

try {

stmt.close()

} catch (SQLException e) {

e.printStackTrace()

}

}

if (pstmt != null) {

try {

pstmt.close()

} catch (SQLException e) {

e.printStackTrace()

}

}

if (con != null) {

try {

con.close()

} catch (SQLException e) {

e.printStackTrace()

}

}

}

//检查账单编号是否存在的方法

@SuppressWarnings("finally")

public boolean checkBillNumber(long bill_number) {

boolean result = false

openConnection()

// 编写SQL语句

String sql = "select b.bill_number from bill b"

try {

// 实例化执行SQL语句的对象preparedstatement

stmt = con.createStatement()

// 执行查询语句并返回结果集

rs = stmt.executeQuery(sql)

while (rs.next()) {

if (bill_number == rs.getLong("bill_number")) {

return result

}

}

result = true

} catch (SQLException e) {

e.printStackTrace()

} finally {

// 关闭数据库连接及资源

closeConnection()

return result

}

}

//分页显示账单列表的方法

@SuppressWarnings("finally")

public Result getPagingBill(int page_number, int page_data_number) {

Result result = null

// 打开数据库连接

openConnection()

// 编写SQL语句

String sql = "select r.bill_number,r.goods_name,r.goods_number,r.transaction_amount," +

"r.value_name,r.supplier_name,r.goods_description,r.bill_date from " +

"(select rownum as rn,b.* from bill_list_view b) r where r.rn between "+

BaseTool.getPagingString(page_number, page_data_number)

try {

// 实例化执行SQL语句的对象preparedstatement

stmt = con.createStatement()

// 执行查询语句并返回结果集

rs = stmt.executeQuery(sql)

// 将结果集储存在Result对象当中

result = ResultSupport.toResult(rs)

} catch (SQLException e) {

e.printStackTrace()

} finally {

// 关闭数据库连接及资源

closeConnection()

return result

}

}

//获得账单总数的方法

@SuppressWarnings("finally")

public int getBillCount() {

int result = 0

// 打开数据库连接

openConnection()

// 编写SQL语句

String sql = "select count(b.bill_number) from bill_list_view b "

try {

// 实例化执行SQL语句的对象preparedstatement

stmt = con.createStatement()

// 执行查询语句并返回结果集

rs = stmt.executeQuery(sql)

// 取得账单总数

while (rs.next()) {

result = rs.getInt(1)

}

} catch (SQLException e) {

e.printStackTrace()

} finally {

// 关闭数据库连接及资源

closeConnection()

return result

}

}

//将用户组合查询的账单列表分页

@SuppressWarnings("finally")

public Result getFilterPagingBill(String goods_name, int pay_status ,

int page_number , int page_data_number){

Result result = null

// 打开数据库连接

openConnection()

// 编写SQL语句

String sql = "select r.bill_number,r.goods_name,r.goods_number,r.transaction_amount," +

"r.value_name,r.supplier_name,r.goods_description,r.bill_date " +

" from (select rownum as rn,b.* from bill_list_view b where "

String sql_last = ") r where r.rn between " + BaseTool.getPagingString(page_number, page_data_number)

// 将参数初始化

String value_name = ""

if (pay_status == 3)

value_name = "已付款"

else if (pay_status == 4)

value_name = "未付款"

else

value_name = null

if ("".equals(goods_name.trim()))

goods_name = null

// 按照用户查询的条件处理

try {

if (value_name != null &&goods_name == null) {

sql = sql + "b.value_name=?" + sql_last

pstmt = con.prepareStatement(sql)

pstmt.setString(1, value_name)

} else if (value_name == null &&goods_name != null) {

goods_name = "%"+goods_name+"%"

sql = sql + "b.goods_name like ?" + sql_last

pstmt = con.prepareStatement(sql)

pstmt.setString(1, goods_name)

} else {

goods_name = "%"+goods_name+"%"

sql = sql + "b.value_name=? and b.goods_name like ?" + sql_last

pstmt = con.prepareStatement(sql)

pstmt.setString(1, value_name)

pstmt.setString(2, goods_name)

}

rs = pstmt.executeQuery()

result = ResultSupport.toResult(rs)

} catch (SQLException e) {

e.printStackTrace()

} finally {

closeConnection()

return result

}

}

//获得用户组合查询的账单总数

@SuppressWarnings("finally")

public int getFilterBillCount(String goods_name, int pay_status) {

int result = 0

// 打开数据库连接

openConnection()

// 编写SQL语句

String sql = "select count(b.bill_number) from bill_list_view b where "

// 将参数初始化

String value_name = ""

if (pay_status == 3)

value_name = "已付款"

else if (pay_status == 4)

value_name = "未付款"

else

value_name = null

if ("".equals(goods_name.trim()))

goods_name = null

// 按照用户查询的条件处理

try {

if (value_name != null &&goods_name == null) {

sql = sql + "b.value_name=? "

pstmt = con.prepareStatement(sql)

pstmt.setString(1, value_name)

} else if (value_name == null &&goods_name != null) {

goods_name="%"+goods_name+"%"

sql = sql + "b.goods_name like ? "

pstmt = con.prepareStatement(sql)

pstmt.setString(1, goods_name)

} else {

goods_name="%"+goods_name+"%"

sql = sql + "b.value_name=? and b.goods_name like ? "

pstmt = con.prepareStatement(sql)

pstmt.setString(1, value_name)

pstmt.setString(2, goods_name)

}

rs = pstmt.executeQuery()

while(rs.next()){

result = rs.getInt(1)

}

} catch (SQLException e) {

e.printStackTrace()

} finally {

closeConnection()

return result

}

}

//根据账单编号获得账单详细信息的方法

@SuppressWarnings("finally")

public Result getBillForBillNumber(long bill_number){

Result result = null

// 打开数据库连接

openConnection()

// 编写SQL语句

String sql = "select b.* from bill_list_view b where b.bill_number="+bill_number

try {

// 实例化执行SQL语句的对象preparedstatement

stmt = con.createStatement()

// 执行查询语句并返回结果集

rs = stmt.executeQuery(sql)

// 将结果集储存在Result对象当中

result = ResultSupport.toResult(rs)

} catch (SQLException e) {

e.printStackTrace()

} finally {

// 关闭数据库连接及资源

closeConnection()

return result

}

}

//为账单增加数据的方法

@SuppressWarnings("finally")

public int updateBill(List<Object>values){

//用于返回执行结果

int result = 0

// 打开数据库连接

openConnection()

// 编写SQL语句

String sql = "insert into bill values (?,?,?,?,?,?,?,?)"

try {

// 实例化执行SQL语句的对象preparedstatement

pstmt = con.prepareStatement(sql)

//设置参数

for(int i=0,j=1i<values.size()i++,j++){

if(values.get(i) instanceof Integer){

pstmt.setInt(j, (Integer)values.get(i))

}else if(values.get(i) instanceof Long){

pstmt.setLong(j, (Long)values.get(i))

} else if(values.get(i) instanceof String){

pstmt.setString(j, (String)values.get(i))

}else{

pstmt.setDate(j, (Date)values.get(i))

}

}

//获得执行结果

result = pstmt.executeUpdate()

} catch (SQLException e) {

e.printStackTrace()

} finally {

// 关闭数据库连接及资源

closeConnection()

//返回执行结果

return result

}

}

//为账单修改数据的方法

@SuppressWarnings("finally")

public int saveBill(List<Object>values){

//用于返回执行结果

int result = 0

// 打开数据库连接

openConnection()

// 编写SQL语句

String sql = "update bill b set b.goods_name=?,b.goods_number=?,b.transaction_amount=?," +

"b.pay_status=?,b.supplier_number=?,b.goods_description=?,b.bill_date=? where b.bill_number=?"

try {

// 实例化执行SQL语句的对象preparedstatement

pstmt = con.prepareStatement(sql)

//设置参数

for(int i=0,j=1i<values.size()i++,j++){

if(values.get(i) instanceof Integer){

pstmt.setInt(j, (Integer)values.get(i))

}else if(values.get(i) instanceof Long){

pstmt.setLong(j, (Long)values.get(i))

}else if(values.get(i) instanceof String){

pstmt.setString(j, (String)values.get(i))

}else{

pstmt.setDate(j, (Date)values.get(i))

}

}

//获得执行结果

result = pstmt.executeUpdate()

} catch (SQLException e) {

e.printStackTrace()

} finally {

// 关闭数据库连接及资源

closeConnection()

//返回执行结果

return result

}

}

//删除账单中数据的方法

@SuppressWarnings("finally")

public int deleteBill(long bill_number){

//用于返回执行结果

int result = 0

// 打开数据库连接

openConnection()

// 编写SQL语句

String sql = "delete bill b where b.bill_number=?"

try {

// 实例化执行SQL语句的对象preparedstatement

pstmt = con.prepareStatement(sql)

//设置参数

pstmt.setLong(1, bill_number)

//获得执行结果

result = pstmt.executeUpdate()

} catch (SQLException e) {

e.printStackTrace()

} finally {

// 关闭数据库连接及资源

closeConnection()

//返回执行结果

return result

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9620466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存