在C#中从SQL数据库检索单个值(最大日期)的最佳方法是什么?

时间:2019-03-27 00:55:23

标签: c# sql ms-access

我是C#的新手,我只是想使用SQL通过C#从Access数据库中检索单个值(最大日期)。最好的方法是什么? SQL字符串如下。谢谢!

strSQL = @"SELECT MAX(TRADE_DATE) FROM tblModels WHERE [MODEL] = '" + Symbol.SymbolInformation.CompanyName + "'";

2 个答案:

答案 0 :(得分:1)

如果使用的是Entity Framework Core,则可以创建可以映射到的模型。我通常利用ViewContext类来正确分离数据库和视图模型

public MaxTradeDate GetMaxTradeDate(string company)
{
    return ViewContext.MaxTradeDate.FromSql
    (
         $"EXEC SELECT MAX(TRADE_DATE) AS Date FROM tblModels WHERE [MODEL] = @Company",
         new SqlParameter("@Company", company)
    ).FirstOrDefault();
}

您的模型将类似于

public class MaxTradeDate
{
    public DateTime Date{ get; set; }
}

如果按照上述过程指示要分离数据库和视图模型,则应记住将模型添加为ViewContext类的属性,例如

public DbSet<MaxTradeDate> MaxTradeDate { get; set; }

下面是您的ViewContext类的示例

public class ViewContext : DbContext
{
    public string DefaultConnectionStringName { get; set; }
    public string ConnectionString { get; set; }

    public DbSet<MaxTradeDate> MaxTradeDate { get; set; }

    public DatabaseContext()
    {
        DefaultConnectionStringName = "DatabaseContext";
    }

    public DatabaseContext
    (
        string defaultConnectionStringName,
        string connectionString = ""
    )
    {
        DefaultConnectionStringName = defaultConnectionStringName;

        ConnectionString = connectionString;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!string.IsNullOrEmpty(ConnectionString))
        {
            optionsBuilder.UseSqlServer(ConnectionString);
        }
        else
        {
            optionsBuilder.UseSqlServer(new ConnectionStringManager().Get(DefaultConnectionStringName));
        }

        base.OnConfiguring(optionsBuilder);
    }
}

答案 1 :(得分:0)

ExecuteScalar非常简单。我不在电脑旁,所以可能会有错别字,但可能是这样的……

   ngAfterViewInit() {
      jQuery(this.elementRef.nativeElement).find('[data-toggle="tooltip"]').tooltip();
   }

请注意使用参数而不是字符串连接来创建查询,因为它可以防止代码容易受到SQL注入攻击。

这可能有助于您使用Access的连接字符串... https://www.connectionstrings.com/access/