我是C#的新手,我只是想使用SQL通过C#从Access数据库中检索单个值(最大日期)。最好的方法是什么? SQL字符串如下。谢谢!
strSQL = @"SELECT MAX(TRADE_DATE) FROM tblModels WHERE [MODEL] = '" + Symbol.SymbolInformation.CompanyName + "'";
答案 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/