【问题标题】:MySQL DataCOnnection and ADO.NETMySQL 数据连接和 ADO.NET
【发布时间】:2010-03-09 18:03:20
【问题描述】:

我想根据条件使用 mysqlconnection、command 和 datareader 或 sqlconnection、command 和 datareader。我想对两种类型的连接使用相同的变量

例如:

Currently i have
dim _c as New mySqlConnection()
dim _cmd as New mysqlCommand()
dim _reader as New mysqlreader()

_reader = _cmd.executereader()
'loop through _reader
 -----------------

如何根据选择情况更改前三个以使用 sql/mysql。这可能吗?

【问题讨论】:

  • 由于您在 CASE 甚至 IF/THEN 中的定义的“范围”,您可以使用相同的变量名复制定义...但超出范围编译器会抱怨它没有被定义。您当然不能创建名称相同但属性不同的定义。您可能应该创建一个 dbclass/db_module/db_subroutine 可以回传任一类型的读取器行。但这项工作将隐藏在 dbclass 中。

标签: .net mysql vb.net ado.net odbc


【解决方案1】:

是的,这是可能的。 ADO.NET 为此提供了一个提供程序 API。你必须这样做:

string providerName;

if (true/*add your logic here*/)
   providerName = "System.Data.SqlClient";
else
   providerName = "MySql.Data.MySqlClient"

DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);

DbConnection connection = factory.CreateConnection();
DbCommand command = factory.CreateCommand();

// ... and so on

【讨论】:

    【解决方案2】:

    编写一个返回数据读取器的方法。将您的选择案例放在方法中,无论您使用什么条件构建查询,都将返回数据读取器。

    确保完成后关闭数据阅读器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2011-06-12
      • 2019-02-24
      • 1970-01-01
      相关资源
      最近更新 更多