我有一个Microsoft Access数据库(.accdb),其中包含我希望显示在.cshtml razor页面上的表中的值。我需要打开连接,然后使用值创建表。
我认为表格会是这样的:
<table>
<thead>
<tr>
<th>Name</th>
<th>Address</th>
<th>Address 2</th>
<th>Field of Work</th>
</tr>
</thead>
<tbody>
@foreach (var row in _____.Query(____))
{
<tr>
<td>@row.name</td>
<td>@row.address</td>
<td>@row.address2</td>
<td>@row.field</td>
</tr>
}
</tbody>
</table>
,但我无法正确打开连接。
建议吗?
答案 0 :(得分:3)
如果您使用的是Access,则应将数据库文件放在App_Data中并在web.config文件中指定连接字符串:
<connectionStrings>
<add name="MyConnection"
connectionString="Provider="Microsoft.ACE.OleDb.12.0;Data Source=|DataDirectory|MyDatabase.accdb;"
providerName="System.Data.OleDb" />
</connectionStrings>
|DataDirectory|
是一个特殊的快捷方式,可以解析为App_Data文件夹的位置。
使用数据库帮助程序时,传入连接字符串的名称:
var db = Database.Open("MyConnection");
var data = db.Query("SELECT * FROM MyTable");
...
...
<tbody>
@foreach (var row in data){
<tr>
<td>@row.name</td>
<td>@row.address</td>
<td>@row.address2</td>
<td>@row.field</td>
</tr>
}
</tbody>
但是,如果您使用的是MVC,则不应在视图中进行数据库打开和查询。您应该在控制器中执行此操作,或者更好地在数据层中执行此操作。或者,您可以查看数据访问代码确实属于视图的ASP.NET网页:http://asp.net/web-pages。