这是我在StackOverflow上的第一篇文章,所以请温柔一点......
我对ADO.NET的对象范围有一些疑问.
当我连接到数据库时,我通常使用这样的代码:
OleDbConnection conn = new OleDbConnection("my_connection_string");
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * from Employees", conn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
DataTable dt = new DataTable();
adapter.Fill(dt);
conn.Close();
conn.Dispose();
Run Code Online (Sandbox Code Playgroud)
假设我将生成的DataTable绑定到网格控件,并允许我的用户编辑网格内容.现在,当我的用户按下"保存"按钮时,我需要调用此代码:
adapter.Update(dt);
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
1)我是否需要保留最初加载数据表时创建的适配器对象,还是可以在"保存"按钮单击事件中创建另一个适配器对象来执行更新?
2)如果我确实需要保留原始适配器对象,是否还需要保持连接对象可用并打开?
我理解ADO.NET的断开模型 - 我只是在更新数据库时对对象范围感到困惑.如果有人能给我一些关于这个场景的最佳实践的指示,我将不胜感激!
提前致谢...
我使用Subversion大约2年来管理一个大型的C#项目.在最近的Subversion更新中,我的源代码文件夹中添加了许多新文件夹:
\ conf
\ db
\ locks
\ hooks
更新期间还添加了35个以上的文件,全部出现在4个新文件夹下.
我没有改变任何客户端(我使用TortoiseSVN)或与Subversion相关的服务器软件,所以我很困惑为什么这些文件夹和文件突然被引入.看起来与Subversion的内部工作相关的文件现在是我的源代码存储库的一部分,这似乎也很奇怪.
有谁可以解释为什么会这样?
马克,先谢谢你
我有一个有趣的SQL问题,我需要帮助.
以下是示例数据集:
Warehouse DateStamp TimeStamp ItemNumber ID
A 8/1/2009 10001 abc 1
B 8/1/2009 10002 abc 1
A 8/3/2009 12144 qrs 5
C 8/3/2009 12143 qrs 5
D 8/5/2009 6754 xyz 6
B 8/5/2009 6755 xyz 6
Run Code Online (Sandbox Code Playgroud)
此数据集表示两个仓库之间的库存转移.有两个记录代表每次传输,这两个传输记录总是具有相同的ItemNumber,DateStamp和ID.两个传输记录的TimeStamp值始终为1,其中较小的TimeStamp表示源仓库记录,较大的TimeStamp表示目标仓库记录.
使用上面的示例数据集,这是我需要的查询结果集:
Warehouse_Source Warehouse_Destination ItemNumber DateStamp
A B abc 8/1/2009
C A qrs 8/3/2009
D B xyz 8/5/2009
Run Code Online (Sandbox Code Playgroud)
我可以编写代码来生成所需的结果集,但我想知道这个记录组合是否可以通过SQL实现.我使用SQL Server 2005作为我的底层数据库.我还需要向SQL添加一个WHERE子句,例如,我可以在Warehouse_Source = A上搜索.不,我无法更改数据模型;).
任何意见是极大的赞赏!
问候,马克