ASP.Net/ADO.net Database/DbProviderFactories

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Executing Dynamic Queries using Provider Independant Code

   <source lang="csharp">

<%@ 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">
Select Provider: <asp:DropDownList ID="ddlProvider" runat="server" Width="190px"/>
Server Name: <asp:TextBox ID="txtServerName" runat="server" Width="183px"/>
Database Name: <asp:TextBox ID="txtDatabaseName" runat="server" Width="180px"/>
Table Name: <asp:TextBox ID="txtTableName" runat="server" Width="176px"/>
                   <asp:Button ID="btnExecute" runat="server" OnClick="btnExecute_Click" Text="Execute Query" />            
       <asp:GridView HeaderStyle-BackColor="Control" 
                     HeaderStyle-ForeColor="Brown" 
                     RowStyle-BackColor="Snow" 
                     runat="Server" 
                     ID="gridResults">
       </asp:GridView> 
   </form>

</body> </html>

</source>