积极答复者
为什么无法更新数据库

问题
-
我想用C#+ASP.NET+ACCESS做一个通讯录,其中addEdit.aspx网页是用来编辑数据的,但用以下方法修改不了数据库,而且整个过程均未报错,请高手帮帮我。十分感谢。
前一网页中有超链接到addEdit.aspx,同时传值,用于确定修改哪条记录,
前一网页中的超链接诘句:
Response.Redirect("addEdit.aspx?ID=" + varAddID);//varAddID用来定位记录
addEdit.aspx页面如下:
<input id="btnOK" name="btnOK" type="submit" value="完成" />
编辑
姓:<input id="ttbLastName" name="ttbLastName" type="text" value="汪" /> 名:<input id="ttbFirstName" name="ttbFirstName" type="text" value="生" /> 公司:<input id="ttbCompany" name="ttbCompany" type="text" value="九天" />
性别:
<input id="radlSex_0" checked="checked" name="radlSex" type="radio" value="男" /><label for="radlSex_0">男</label> <input id="radlSex_1" name="radlSex" type="radio" value="女" /><label for="radlSex_1">女</label> 修改后,单击“完成”按钮Update数据库
addEdit.aspx.cs完整代码:
namespace AddressBook
{
public partial class addEdit : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;"; //连接数据库字符串
strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb";string strSqlSearch = "select * from Name where addID=" + int.Parse(Request.QueryString["ID"]); //选择数据字符串
OleDbConnection connDbab = new OleDbConnection(strConn); //连接数据库
OleDbCommand commDbabSearch = new OleDbCommand(strSqlSearch, connDbab); //操作数据库中的表
connDbab.Open();
OleDbDataReader dtrdDbabSearch = commDbabSearch.ExecuteReader();
dtrdDbabSearch.Read(); //读取记录//将记录内容放入文本框中
if (dtrdDbabSearch.HasRows) //判断DataReader对象中是否包含任何行
{
ttbLastName.Text = dtrdDbabSearch["LastName"].ToString();
ttbFirstName.Text = dtrdDbabSearch["FirstName"].ToString();
ttbCompany.Text = dtrdDbabSearch["Company"].ToString();
radlSex.Items[0].Selected = (bool)dtrdDbabSearch["Sex"];
radlSex.Items[1].Selected = !(bool)dtrdDbabSearch["Sex"];}
connDbab.Close();
}protected void btnOK_Click(object sender, EventArgs e)
{string strConn = "Provider=Microsoft.Jet.OleDb.4.0;"; //连接数据库字符串
strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb";string strSqlUpda = "UPDATE Name SET FirstName='" + ttbFirstName.Text + "' where addID=" + int.Parse(Request.QueryString["ID"]); //更新数据库表字符串
OleDbConnection connDbab = new OleDbConnection(strConn); //连接数据库
OleDbCommand commDbabUpda = new OleDbCommand(strSqlUpda, connDbab); //操作数据库中的表
connDbab.Open();
commDbabUpda.ExecuteNonQuery(); //更新数据库表
connDbab.Close();
Response.Write("<script language=javascript>alert('该客户信息更新成功!');</script>");}
}
}
答案
-
楼主:)
请务必自己核查你的Update是不是包所有要更新的字段全部包含到里边去了?
如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处- 已标记为答案 乐此不疲 2011年7月7日 8:42
全部回复
-
你好楼主:)
请仔细检查以下语句,尤其是Id是否存在于表中——你的Request.QueryString["ID"]是什么内容?
string strSqlUpda = "UPDATE Name SET FirstName='" + ttbFirstName.Text + "' where addID=" + int.Parse(Request.QueryString["ID"]);
建议调试程序,把strSqlUpda黏贴到SQL management Studio中测试看看那可以不?我怀疑问题处在这里。
如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处 -
我认为可能是没有IsPostBack的校验,导致数据重复绑定
protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack){ string strConn = "Provider=Microsoft.Jet.OleDb.4.0;"; //连接数据库字符串 strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb"; string strSqlSearch = "select * from Name where addID=" + int.Parse(Request.QueryString["ID"]); //选择数据字符串 OleDbConnection connDbab = new OleDbConnection(strConn); //连接数据库 OleDbCommand commDbabSearch = new OleDbCommand(strSqlSearch, connDbab); //操作数据库中的表 connDbab.Open(); OleDbDataReader dtrdDbabSearch = commDbabSearch.ExecuteReader(); dtrdDbabSearch.Read(); //读取记录 //将记录内容放入文本框中 if (dtrdDbabSearch.HasRows) //判断DataReader对象中是否包含任何行 { ttbLastName.Text = dtrdDbabSearch["LastName"].ToString(); ttbFirstName.Text = dtrdDbabSearch["FirstName"].ToString(); ttbCompany.Text = dtrdDbabSearch["Company"].ToString(); radlSex.Items[0].Selected = (bool)dtrdDbabSearch["Sex"]; radlSex.Items[1].Selected = !(bool)dtrdDbabSearch["Sex"]; } connDbab.Close(); } }
算神的博客 -
ID是前一网页中的传值,用来定义需要编辑的记录。
前一网页中的超链接诘句:
Response.Redirect("addEdit.aspx?ID=" + varAddID);//varAddID用来定位记录
你好,我的意思是让你查询string strSqlUpda = "UPDATE Name SET FirstName='" + ttbFirstName.Text + "' where addID=" + int.Parse(Request.QueryString["ID"]);
这句话中的Id,因为你这句话就是Update作用的。检查Id是否存在于表中。
如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处 -
楼主:)
请务必自己核查你的Update是不是包所有要更新的字段全部包含到里边去了?
如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请
If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处- 已标记为答案 乐此不疲 2011年7月7日 8:42