Материал из .Net Framework эксперт
Executing Dynamic Queries using Provider Independant Code
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.rumon" %>
<script runat="server">
void Page_Load(object source, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable table = DbProviderFactories.GetFactoryClasses();
ddlProvider.DataSource = table;
ddlProvider.DataTextField = "Name";
ddlProvider.DataValueField = "InvariantName";
ddlProvider.DataBind();
}
}
void btnExecute_Click(object sender, EventArgs e)
{
string sql = "Select * from " + txtTableName.Text;
ExecuteQuery(ddlProvider.SelectedItem.Value, sql);
}
void ExecuteQuery(string providerName, string sql)
{
DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
string connectionString = CreateConnectionString(factory.CreateConnectionStringBuilder());
using (DbConnection conn = factory.CreateConnection())
{
conn.ConnectionString = connectionString;
using (DbDataAdapter adapter = factory.CreateDataAdapter())
{
adapter.SelectCommand = conn.CreateCommand();
adapter.SelectCommand.rumandText = sql;
DataTable table = new DataTable("Table");
adapter.Fill(table);
gridResults.DataSource = table;
gridResults.DataBind();
}
}
}
private string CreateConnectionString(DbConnectionStringBuilder builder)
{
builder.Add("Integrated Security", true);
builder.Add("Initial Catalog", txtDatabaseName.Text);
builder.Add("Data Source", txtServerName.Text);
return builder.ConnectionString;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Executing Dynamic Queries using Provider Independant Code</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td>Select Provider:</td>
<td><asp:DropDownList ID="ddlProvider" runat="server" Width="190px"/></td>
</tr>
<tr>
<td>Server Name:</td>
<td><asp:TextBox ID="txtServerName" runat="server" Width="183px"/></td>
</tr>
<tr>
<td>Database Name: </td>
<td><asp:TextBox ID="txtDatabaseName" runat="server" Width="180px"/></td>
</tr>
<tr>
<td>Table Name: </td>
<td><asp:TextBox ID="txtTableName" runat="server" Width="176px"/></td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btnExecute" runat="server" OnClick="btnExecute_Click" Text="Execute Query" />
</td>
</tr>
</table>
<asp:GridView HeaderStyle-BackColor="Control"
HeaderStyle-ForeColor="Brown"
RowStyle-BackColor="Snow"
runat="Server"
ID="gridResults">
</asp:GridView>
</div>
</form>
</body>
</html>