Pro*_*ger 0 .net c# sql-server sqldatareader sql-server-ce
我有一个执行SQL查询的函数.根据注册表值,它将命中SQL Server或SQL Server Compact Edition.如果它使用的是SQL Server CE,则设置recordSet变量的行应如下所示:
SqlCeDataReader recordSet = da.ExecuteSQLCommand(selectCommand);
对于SQL Server,它应该如下所示:
SqlDataReader recordSet = da.ExecuteSQLCommand(selectCommand);
我试图将所有这些放在函数开头的if/then语句中,但似乎无法弄清楚如何在if/then中设置Type.这是我的(部分)代码:
public static string SqlQuery(string selectCommand, int regval)
{
    var recordSet = null;
    string selectCommand = "select * from whatever";
    if (regval == 0)
    {
        SqlDataReader recordSet = null;
    }
    else
    {
        SqlCEDataReader recordSet = null;
    }
    recordSet = da.ExecuteSQLCommand(selectCommand);
}
问题是除非我在if/else之前声明了recordSet变量,否则我不能在之后使用它.但是,如果我在if/else之前声明它,我就无法更改类型.
你不能这样做.除非你使用,否则变量的类型在编译时确实是一成不变的dynamic.
您可以使用通用界面IDataReader.其他标准的ADO.NET客户端,例如MySQL和SQLite,也实现了这一点.
编辑
这是一个例子
public static string SqlQuery(string selectCommand, int regval)
{
    IDataReader recordSet = null;
    string selectCommand = "select * from whatever";
    recordSet = da.ExecuteSQLCommand(selectCommand);
}
| 归档时间: | 
 | 
| 查看次数: | 133 次 | 
| 最近记录: |