使用 ASP.NET 构建用户响应式 Web 查询生成器






4.60/5 (6投票s)
基于 Web 平台的查询生成器,可以与您的数据库互动:)
引言
本技巧帮助您使用 ASP.NET 构建用户响应式 Web 查询生成器,并深入了解 ASP.NET 的一些基本功能,以及如何使用基于 Web 的用户控件、CSS 样式等。之后,我们可以将数据导出为 PDF 或 Excel 格式。它与 Microsoft Edge 完美兼容。
背景
在网上搜索支持 Web 平台和各种情况的查询生成器已经三个星期了,我终于开发了一个独立的 Web 应用程序,可以与最终用户交互。
Using the Code
让我们进入主要代码部分,我们将建立连接后从数据库中获取数据,然后显示这些数据以便应用查询。
在这里,我尝试使此应用程序具有用户响应性。用户需要输入机器名称,应用程序将尝试读取可用的 SQL Server 数据库,然后获取相关的表或视图,用户希望在这些表或视图上应用查询条件。
DataBaseName = new List<string>();
machine_Name = txtMachineName.Text;
Session["Machine_Name"] = machine_Name;
string ConString = "Data Source=" + machine_Name +
";Integrated Security=True;MultipleActiveResultSets=True;";
using (var con1 = new SqlConnection(ConString))
{
con1.Open();
DataTable databases = con1.GetSchema("Databases");
foreach (DataRow database in databases.Rows)
{
// fetching related details for each database
String databaseName = database.Field<String>("database_name");
DataBaseName.Add(databaseName.ToString());
short dbID = database.Field<short>("dbid");
DateTime creationDate = database.Field<DateTime>("create_date");
}
同样,我们也可以获取数据库中存在的表/视图。
Session["selected_table"] = selectTable;
string sqlQuery = "Select * from " + selectTable;
SqlCommand command = new SqlCommand(sqlQuery);
SqlConnection sqlConn = new SqlConnection((Session["Connection_String"]).ToString());
sqlConn.Open();
command.Connection = sqlConn;
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dt = new DataTable();
adapter.Fill(dt);
在选择数据库和要选择的表详细信息后,我们可以进一步提取所选表/视图的属性。
我使用了一个基于 Web 的用户控件来应用提取的列名(属性)上的 where
条件查询。
请查看源代码,了解如何创建基于 Web 的用户控件并在主页上注册它。
优势:您无需以重复的方式显式地优化控件集合。
回到我们的应用程序,一旦用户完成对表/视图属性应用条件,我们将进入查询生成部分。根据条件,我不断地将我的查询生成器(CodeEngine.Framework.QueryBuilder.SelectQueryBuilder
)string
追加到查询中,并最终执行它以获取结果。
SQLQueryText.Text = queryBuilder.BuildQuery(); // queryBuilder is a
// local variable of CodeEngine.Framework.QueryBuilder.SelectQueryBuilder
SqlConnection sqlConn;
try
{
SqlCommand command = new SqlCommand(SQLQueryText.Text);
sqlConn = sqlConn = new SqlConnection((Session["Connection_String"]).ToString());
sqlConn.Open();
command.Connection = sqlConn;
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dt = new DataTable();
adapter.Fill(dt);
sqlConn.Close();
// SetNewInstance();
}
catch (SqlException ex)
{
this.Session["exceptionMessage"] = ex.Message;
// Response.Redirect("ErrorDisplay.aspx");
lblError.Text = ex.Message;
// log.Write(ex.Message + ex.StackTrace);
}
之后,我们可以将结果处理为 Excel/Pdf 格式。这是一个非常简单的过程。
导出到 Excel
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=Export_Result.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
using (StringWriter sw = new StringWriter())
{
HtmlTextWriter hw = new HtmlTextWriter(sw);
//To Export all pages from ResultGrid i.e. data grid used for displaying results
ResultGrid.AllowPaging = false;
ResultGrid.RenderControl(hw);
//style to format numbers to string
string style = @"<style> .textmode { } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
关注点
好吧,我对 ASP.NET 来说还是新手,之前一直在使用 WPF,最初,在 ASP.NET 中设计 UI 并使用用户控件和 CSS 样式对我来说很困难,但一旦完成,我就感到非常自信和着迷。