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

时间:2011-03-21 09:47:30

标签: c# asp.net database linq-to-sql

我有问题,我希望得到你的帮助。我的页面中有一个编辑按钮和文本框。我想编辑从数据库到这些文本框的单个记录。我写了下面的代码,当我点击编辑按钮然后我有结果。结果加载到我的文本框中。但是,当我再次尝试使用相同的ID运行第二次页面时,我发出此错误“指定的强制转换无效”。出了什么问题?我使用int ID = 3;获得此示例中的第3条记录

protected void Button2_Click(object sender,EventArgs e)

{

DataClassesDataContext cxt = new 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();

3 个答案:

答案 0 :(得分:0)

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

我会说通常情况只会在回发后提出......

我很少看到除了PageLoad以外的任何东西都使用了IsPostBack。

答案 1 :(得分:0)

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

cxt.SubmitChanges();

答案 2 :(得分:0)

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

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