我正在使用ASP Classic和MS Access数据库。我在ASP Classic中有代码,我在其中添加数据:
<%
Dim con, rs, sql
Set con = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
con.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("dbPayroll.mdb") &""
sql="SELECT * FROM tblPayslipRec"
rs.LockType = 3
rs.CursorType = 2
rs.Open sql, con
rs.AddNew
rs.fields("ps_date")= request.form("dnt")
rs.fields("emp_id")= request.form("eid")
rs.fields("emp_name")= request.form("name")
rs.Update
response.redirect "makepayslip2.asp"
rs.Close
SET rs = Nothing
SET con= Nothing
%>
我需要在上面的代码中加入我将更新表tblPayslipRec
上的一列。
有可能吗?如果有,请帮助我。
答案 0 :(得分:0)
为什么不使用标准的更新查询,例如
sql = "update tblPayslipRec set name = '"& request.form("name") &"' where id = "& request.form("id")
con.Execute sql
我假设您的主键字段名为“id”
这看起来像是内联网的一部分,所以sql注入攻击可能不是一个担心,但如果这是一个面向公众的网页,我强烈建议在发送表单数据之前放入一个功能来清理表单数据数据库。此外,您正在使用ODBC连接字符串,但它有效,但OLEDB连接可能是更好的选择 - 例如
"PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="& Server.MapPath("dbPayroll.mdb")
答案 1 :(得分:0)
Dim con, rs, sql
Set con = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
con.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("dbPayroll.mdb") &""
sql="SELECT * FROM tblPayslipRec"
rs.LockType = 3
rs.CursorType = 2
rs.Open sql, con
rs.AddNew
rs.fields("ps_date")= request.form("dnt")
rs.fields("emp_id")= request.form("eid")
rs.fields("emp_name")= request.form("name")
rs.Update
rs.close
set rs = nothing
' Now do your record update
set rs = Server.CreateObject("ADODB.Recordset")
sql="SELECT * FROM tblPayslipRec where id = " & Your_Record_Id
rs.open(sql,conn,1,3)
if not (rs.eof or rs.bof) then
rs.update
rs("yourField") = "What You Want To Update It With")
rs.update
else
' No record found to update
end if
response.redirect "makepayslip2.asp"
rs.Close
SET rs = Nothing
SET con= Nothing