【问题标题】:C# New method breaks existing oneC# 新方法破坏了现有方法
【发布时间】:2012-07-18 20:32:52
【问题描述】:

我正在编写一个用于将对象保存和检索到数据库中的类。我的课程有问题,因为我添加了一个从数据库加载值的方法,这突然破坏了我的保存方法。

我的保存方法,在我添加加载方法之前运行良好,在添加加载方法后停止更新现有条目。它在将新条目插入数据库方面仍然做得很好,但它不再更新。如果我删除加载方法,它会继续更新并正常插入,但是一旦我添加回加载方法,我就会开始遇到问题。

代码示例位于:http://forums.asp.net/p/1825368/5072214.aspx/1?New+method+breaks+existing+one

【问题讨论】:

  • 您如何访问数据库,使用 ADO 还是高级框架?
  • 另外,你不是在你的代码隐藏中搞乱UserID吗?
  • 为什么要创建加载数据的方法?在本地的一个位置打开连接,然后在该方法之外的其他位置关闭它,这不是很好的风格。我认为这就是它的原因。
  • @Andre Calil 我正在使用 ADO。您认为 UserID 有什么问题?
  • @Bob 我对此还是有些陌生。你能解释一下为什么创建加载数据的方法是一种不好的做法吗?另外,你对解决这个问题有什么建议吗?将数据读取器分配给列表或数组然后对其进行操作会更好,还是我应该从代码隐藏中全部完成?

标签: c# insert load crud


【解决方案1】:

您不会在 Load() 方法中关闭连接。

【讨论】:

  • 我不知道如何正确处理它,但我试图做的是在阅读完后关闭来自代码隐藏的连接。我想这可能是一种不好的做法或完全不正确。有什么建议吗?
  • 通常我所做的就是执行阅读器,以适合我需要的数据结构从中获取数据,然后关闭连接。这种做法可确保当您打开它时,您会关闭它并使其更具可读性。 Load() 方法应该“加载”要读取的数据,而不是返回 SqlDataReader。根据您对数据的处理方式,您甚至可能想要定义一个自定义 obj 来存储所有数据。这样您就可以使用通用 List 来存储所有内容并根据需要访问它。
【解决方案2】:

看起来您从未关闭加载方法中使用的初始连接,而是在另一种方法中创建新连接。也许这就是原因?没有异常文本很难说。你能发布异常吗?

您似乎没有在代码中的任何位置调用 CitizenSave

【讨论】:

  • 一点也不例外。当我尝试更新条目时,页面会进行回发,但未注册任何更改。
  • @KinsDotNet 看起来您没有在代码中的任何位置调用 CitizenSave
  • 它是从 .aspx 文件(我没有发布)中作为按钮点击事件调用的。
  • @KinD 在那里设置一个断点,看看它是否被正确命中。
猜你喜欢
  • 2016-09-15
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 2012-03-15
相关资源
最近更新 更多