连接到ASP.NET与经典ASP的数据库

连接到ASP.NET与经典ASP的数据库

问题描述:

我有多年的ASP编程经验,但我是ASP.NET编程的新手。连接到ASP.NET与经典ASP的数据库

我在看一个网站的代码,我注意到编程这个网站的程序员与数据库建立了两个连接。一个在Web.config中,另一个在ASPX页面中。

Web.config中有这样的:

<connectionStrings> 
    <add name="pearl" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Hosting\7195242\html\db\xxx.mdb" providerName="System.Data.OleDb" /> 
</connectionStrings> 

ASPX页面有这样的:

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="D:\Hosting\7195242\html\db\xxx.mdb" 
    SelectCommand="SELECT * FROM [Pearl_PageContents]"> 
</asp:AccessDataSource> 

有了ASP,我通常会创建一个名为connection.asp一个ASP文件,添加我的数据库连接码此文件并将其附加到与数据库交互的所有其他ASP页面。为什么它与ASP.NET不同?

第一个不是连接。这只是连接字符串的声明。其他一些代码将使用连接字符串连接到数据库,可能使用的代码有点类似于您用于ADODB的代码。

第二个是使用数据源控件。这是一个可以将数据提供给另一个控件的控件。 ASP中没有任何东西存在。它允许纯粹声明的Web表单,您可以在一个控件中声明数据,并使FormView或GridView控件使用该数据,根本不需要额外的代码即可执行CRUD操作。

我建议你从http://www.asp.net的教程开始。

+0

第二个(在aspx页面中)很可能是拖放设计的结果。 – 2011-01-09 07:09:55

Web.config只是让您可以存储全局变量。在技​​术上,创建另一个类并在该cs文件中保存相同的数据没有任何问题。但是,使用web.config可以轻松编辑该连接,为该文件添加更多连接字符串,然后使用ConnectionManager获取任何这些连接字符串。你也可以加密你的web.config文件。

using System; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Linq; 
using System.Web; 

namespace Volta_Reporting_Application.DBL 
{ 
    public class DBHandler 
    { 
     public SqlConnection _SqlConnection { get; set; } 
     public String _SqlConnectionString { get; set; } 
     public DataSet _DataSet { get; set; } 
     public List<SqlCommand> _CommandList { set; get; } 
     public DBHandler() 
     { 
      //_SqlConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; ; 
      _SqlConnectionString = Helpers.Helper.GetConnectionString(); 
     } 
     public bool OpenConnection() 
     { 

       _SqlConnection = new SqlConnection(_SqlConnectionString); 
      if (SqlConnection != null && SqlConnection.State == ConnectionState.Closed) 
      { 

       _SqlConnection.Open(); 
      } 
    .Open); 
     } 

     public bool CloseConnection() 
     { 
      if (SqlConnection != null && SqlConnection.State == ConnectionState.Open) 
       _SqlConnection.Close(); 
      if (_SqlConnection != null) 
       _SqlConnection.Dispose(); 
      return _SqlConnection == null; 
     } 
     public object ExecuteMyCommand(SqlCommand cmd) 
     { 
      bool res = false; 
      try 
      { 
       OpenConnection(); 
       cmd.Connection = _SqlConnection; 
       if (cmd.ExecuteNonQuery() > 0) 
       { 
        res = true; 
       } 
      } 
      catch (Exception) 
      { 

       res = false; 
      } 
      finally 
      { 
       CloseConnection(); 
      } 
      return res; 
     } 

     public object CRUD(string Query, char operation = 'c') 
     { 
      operation = char.Parse(operation.ToString().ToLower()); 
      object res = null; 
      try 
      { 
       OpenConnection(); 
       SqlDataAdapter da = new SqlDataAdapter(); 
       switch (operation) 
       { 
        case 'c': 
        case 'i': 
         da.InsertCommand = _SqlConnection.CreateCommand(); 
         da.InsertCommand.CommandText = Query; 
         da.InsertCommand.ExecuteNonQuery(); 
         res = true; 
         break; 
        case 'z': 
         da.SelectCommand = _SqlConnection.CreateCommand(); 
         da.SelectCommand.CommandText = Query; 
         return da.SelectCommand.ExecuteScalar(); 
        case 's': 
        case 'r': 
         DataSet ds = new DataSet(); 
         da.SelectCommand = _SqlConnection.CreateCommand(); 
         da.SelectCommand.CommandText = Query; 
         //da.SelectCommand.ExecuteReader(); 
         da.Fill(ds); 
         res = ds; 
         //ds.Dispose(); 
         break; 
        case 'u': 
         da.UpdateCommand = _SqlConnection.CreateCommand(); 
         da.UpdateCommand.CommandText = Query; 
         res=da.UpdateCommand.ExecuteNonQuery(); 
         break; 
        case 'd': 
         da.DeleteCommand = _SqlConnection.CreateCommand(); 
         da.DeleteCommand.CommandText = Query; 
         da.DeleteCommand.ExecuteNonQuery(); 
         res = true; 
         break; 
        default: break; 
       } 
       if (res == null) 
        res = false; 
      } 
      catch (Exception) 
      { 
       res = null; 
      } 
      finally 
      { 
       CloseConnection(); 
      } 
      return res; 
     } 
    } 
}