0

我一直在开发一个使用强类型数据集和存储过程的应用程序。我刚毕业,这是卖给我们的方法。我开始有严重的怀疑。

我的客户告诉我他可能会从 SQL Server 更改为 MySQL。从我读过的内容来看,最好不要使用存储过程,因为迁移可能会变得更加困难。所以无论如何,我刚刚使用向导实现了一个新的表适配器查询,并选择了Use SQL Statements而不是Create new stored procedure

我对查询的调用

Intranet.administratorsDataTable dt = taAdministrators.GetAdministrators();

现在生成此错误:

executereader 需要一个开放且可用的连接。连接的当前状态已关闭

我不知道为什么这个自动生成的代码没有连接,而且我很宿醉,无法处理这个问题。我决定暂时回到 SP,这样我就可以完成一些工作。仍在抛出此错误(相同的表适配器,相同的方法名称,但重新配置为使用 SP)。我所有的其他数据库调用都可以正常工作。

我假设生成的 SQL 代码仍然在某个地方浮动,即使我将适配器更改为使用 SP。有人可以告诉我它在哪里,以便我可以删除它吗?

另一方面,我真的开始认为手动使用 SqlConnection 和 SqlCommand 是一个更好的选择,因为在修改数据库表等灵活性方面,使用这些查询“工具”会带来很多麻烦。您更有经验的人告诉我这是否正确,或者您是否提倡使用表格适配器?

*编辑 它也会抛出这些:

无效操作。连接已关闭。

已经有一个与此命令关联的打开的 DataReader,必须先关闭它。

4

2 回答 2

1

解决方案是转到 tableAdapter 中的查询属性并手动将“命令类型”更改为StoredProcedure

突出显示查询>转到属性窗口>更改命令类型

当我重新配置查询时,似乎这没有(或没有)自动更新。

于 2013-02-04T08:12:33.140 回答
0

如果您提供一些代码,那就更好了。我认为,您需要打开连接。

SqlCommand Cmd= new SqlCommand();
Cmd.Open();
// then u can use Cmd.ExecuteReader(); 
于 2013-02-02T05:49:48.793 回答