C# 用C语言从Excel文件查询数据库比较单元格

C# 用C语言从Excel文件查询数据库比较单元格,c#,sql,excel,C#,Sql,Excel,我正在尝试查看excel电子表格中的此单元格是否是数据库中的主键。我正在使用Aspose来导入excel文件。我知道连接字符串也在工作 我想查询这个代码的数据库。如果此代码返回一行,我希望该标志为true。如果没有行返回,我想继续,因为标志已经设置为false。我试过了,尽管数据库中没有这些代码,但我一直在实现。有人能帮我让它正常工作吗?还是有更简单的方法来完成这项任务 #region StateCharges_Status public static bool StateCharges_Sta

我正在尝试查看excel电子表格中的此单元格是否是数据库中的主键。我正在使用Aspose来导入excel文件。我知道连接字符串也在工作

我想查询这个代码的数据库。如果此代码返回一行,我希望该标志为true。如果没有行返回,我想继续,因为标志已经设置为false。我试过了,尽管数据库中没有这些代码,但我一直在实现。有人能帮我让它正常工作吗?还是有更简单的方法来完成这项任务

#region StateCharges_Status
public static bool StateCharges_Status(DataRow dr) {
    bool ok = StateCharges_Exists(dr);
    if (ok)
        return StateCharges_Update(dr);
    else
        return StateCharges_Insert(dr);
}
#endregion

#region StateCharges_Exists
private static bool StateCharges_Exists(DataRow dr) {
    bool flag = false;
    Database pbkDB = DatabaseFactory.CreateDatabase("PbKConnectionString");
    DbCommand dbCommand = pbkDB.GetSqlStringCommand(string.Format(@"Select * from tblCtStateCharges where code = '{0}'", dr["Code"].ToString()));
    try {
        pbkDB.ExecuteNonQuery(dbCommand);
        flag = true; // <-- I guess this is where it needs something added.
    } catch (Exception ex) {
        Console.WriteLine(ex.ToString());
    }
    return flag;
}
#endregion

您应该使用返回IEnumerable的ExecuteQuery方法

然后,您可以通过以下方式测试结果:

var result = pbkDB.ExecuteQuery(dbCommand);
flag = result.Count() > 0;

您应该将查询更改为以下内容:

 DbCommand dbCommand = pbkDB.GetSqlStringCommand(string.Format(@"Select count(*) as cnt      from tblCtStateCharges where code = '{0}'", dr["Code"].ToString()));
如果只关心记录是否存在,则无需选择每个字段

然后你就换了

 pbkDB.ExecuteNonQuery(dbCommand);
差不多

 int count = (int)pbkDB.ExecuteScalar(dbCommand);
然后将标志设置更改为“您不再需要if”

  flag = count > 0;    
所以新代码看起来像

 private static bool StateCharges_Exists(DataRow dr) {
 bool flag = false;
 Database pbkDB = DatabaseFactory.CreateDatabase("PbKConnectionString");
 DbCommand dbCommand = pbkDB.GetSqlStringCommand(string.Format(@"Select count(*) as cnt from   tblCtStateCharges where code = '{0}'", dr["Code"].ToString()));
 try {
    int count = (int)pbkDB.ExecuteScalar(dbCommand);
   flag = count > 0; 
 } catch (Exception ex) {
    Console.WriteLine(ex.ToString());
 }
 return flag;

}

我收到一个错误。无法解析活动模板会话中的符号“ExecuteQuery”活动热点