繁体   English   中英

如何使用文本框编辑/更新数据库中的记录?

[英]How do I edit/update records from a database using textbox?

我有问题,请您帮忙。 我的页面上有一个编辑按钮和文本框。 我想将数据库中的一条记录编辑到这些文本框中。 我编写了以下代码,当我单击“编辑”按钮时,我得到了结果。 结果加载到我的文本框中。 但是,当我第二次尝试再次运行具有相同ID的页面时,就会出现此错误“指定的转换无效”。 怎么了 我用int ID = 3; 在此示例中获得第三条记录

受保护的void Button2_Click(对象发送者,EventArgs e)

{

DataClassesDataContext cxt =新的DataClassesDataContext(); USER_TABLE aChar = cxt.USER_TABLEs.Single(c => c.ID == 3); //得到一条记录

            fname2.Text = aChar.FIRST_NAME;
            lname2.Text = aChar.LAST_NAME;
            pob2.Text = aChar.PLACE_OF_BIRTH;
            pom2.Text = aChar.PLACE_OF_MARRIAGE;
            education2.Text = aChar.EDUCATION;
            occupation2.Text = aChar.OCCUPATION;
            pod2.Text = aChar.PLACE_OF_DEATH;
            String str = aChar.DATE_OF_BIRTH.ToString();
           String str1 = aChar.DATE_OF_MARRIAGE.ToString();
            String str2 = aChar.DATE_OF_DEATH.ToString();

为什么在事件处理程序代码中执行if (!Page.IsPostBack)

我想说的是,通常只有在回发后才引发一个事件...

除了PageLoad之外,我很少看到IsPostBack用于其他任何东西。

您需要明确保存对上下文的更改

cxt.SubmitChanges();

似乎在获取对象(使用Single)时会收到指定的强制转换异常。 您可能需要检查对象模型和数据库之间的数据类型,以确保在使用字符串的数据库中对象不期望数字(反之亦然)。 另外,检查对象和数据库列的可空性。 绑定时,LINQ to SQL不支持隐式类型转换。

至于为什么它对第一个请求有效,而对第二个请求无效,为什么两个请求之间发生了什么变化? 另外,两个请求之间的上下文是否仍然有效? 当第二次请求相同的ID时,Single会缓存获取的值,并使查询管道短路,因此,使用Single时,如果上下文保持活动状态,则应该只看到一个数据库请求。 尝试使用ctx.Log = Console.Out记录您的数据库请求,或者使用SQL Profiler(如果有)进行记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM