#1 SQL data from a SQL query and DataTable
The top 10 files found in this portal as returned from DB
This example queries the DNN SQL for the files using a DataTable
object.
Initial Code
The following code runs at the beginning and creates some variables/services used in the following samples.
@{
// load the sql connection name from Web.Config
// the default connection string for DNN is SiteSqlServer
var conString = ConfigurationManager.ConnectionStrings["SiteSqlServer"].ToString();
// You should always write parameters using the @-syntaxt,
// and never write them directly into the SQL using string-concatenation
// to protect yourself from SQL injection attacks
const string sqlCommand = "Select Top 10 * from Files Where PortalId = @PortalId";
// create an adapter object, tell it what to do, and load results into fileTable
var adapter = new SqlDataAdapter(sqlCommand, conString);
adapter.SelectCommand.Parameters.AddWithValue("@PortalId", CmsContext.Site.Id);
var fileTable = new DataTable();
adapter.Fill(fileTable);
}
Output
- image-1.jpg
- image-2.jpg
- ct basic content.png
- ct image.png
- ct layout element.png
- ct links.png
- ct location.png
- ct person.png
- ct video.png
- RazorTutoApp1000x1000.png
<ol>
@foreach (DataRow row in fileTable.Rows)
{
<li>@row["FileName"]</li>
}
</ol>
The top 10 files found in this portal with reverse sorting
Output
- RazorTutoApp1000x1000.png
- image-2.jpg
- image-1.jpg
- ct video.png
- ct person.png
- ct location.png
- ct links.png
- ct layout element.png
- ct image.png
- ct basic content.png
@{
// This applies a default-view with more parameters
fileTable.DefaultView.Sort = "FileName DESC";
}
<ol>
@foreach (DataRow row in fileTable.DefaultView.ToTable().Rows)
{
<li>@row["FileName"]</li>
}
</ol>
#1 SQL data from a SQL query and DataTable
@inherits Custom.Hybrid.Razor14
@using ToSic.Razor.Blade;
@using System.Linq;
@using System.Configuration
@using System.Data
@using System.Data.SqlClient
<!-- unimportant stuff, hidden -->
<div @Sys.PageParts.InfoWrapper()>
@Html.Partial("../shared/DefaultInfoSection.cshtml")
<div @Sys.PageParts.InfoIntro()>
<h2>The top 10 files found in this portal as returned from DB</h2>
<p>
This example queries the DNN SQL for the files using a <code>DataTable</code> object.
</p>
</div>
</div>
@{
// load the sql connection name from Web.Config
// the default connection string for DNN is SiteSqlServer
var conString = ConfigurationManager.ConnectionStrings["SiteSqlServer"].ToString();
// You should always write parameters using the @-syntaxt,
// and never write them directly into the SQL using string-concatenation
// to protect yourself from SQL injection attacks
const string sqlCommand = "Select Top 10 * from Files Where PortalId = @PortalId";
// create an adapter object, tell it what to do, and load results into fileTable
var adapter = new SqlDataAdapter(sqlCommand, conString);
adapter.SelectCommand.Parameters.AddWithValue("@PortalId", CmsContext.Site.Id);
var fileTable = new DataTable();
adapter.Fill(fileTable);
}
<ol>
@foreach (DataRow row in fileTable.Rows)
{
<li>@row["FileName"]</li>
}
</ol>
<h3>The top 10 files found in this portal with reverse sorting</h3>
@{
// This applies a default-view with more parameters
fileTable.DefaultView.Sort = "FileName DESC";
}
<ol>
@foreach (DataRow row in fileTable.DefaultView.ToTable().Rows)
{
<li>@row["FileName"]</li>
}
</ol>
@* Footer *@
@Html.Partial("../Shared/Layout/FooterWithSource.cshtml", new { Sys = Sys })