2011-01-09 5 views
0

У меня есть опыт программирования с ASP, но я новичок в программировании ASP.NET.Подключение к базе данных в ASP.NET и Classic 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, я обычно создаю один файл ASP под названием connection.asp, добавить свои коды подключения к базе данных в этот файл и присоединить его ко всем другим страницам ASP, которые взаимодействуют с данными базы данных. Почему это отличается от ASP.NET?

ответ

1

Первый - это не соединение. Это просто объявление строки подключения. Некоторые другие части кода будут использовать строку подключения для подключения к базе данных, возможно, используя код, несколько похожий на то, с чем вы привыкли с ADODB.

Во-вторых, использование элемента управления источником данных. Это элемент управления, который может передавать данные другому элементу управления. В ASP нет ничего подобного. Он допускает чисто декларативные веб-формы, где вы можете объявлять данные в одном элементе управления и иметь элементы управления FormView или GridView, которые используют CRUD-операции без какого-либо дополнительного кода.

Рекомендую вам начать с учебников по адресу http://www.asp.net.

+0

Второй вариант (на странице aspx), скорее всего, является результатом проектирования перетаскивания. –

+0

@Sarwar: вот что я сказал. –

+0

и я добавил комментарий к вашему ответу :) Не ответил новый ответ –

0

Web.config - это просто, чтобы вы могли хранить глобальные переменные. Технически нет ничего плохого в том, что вы просто создаете другой класс и сохраняете одни и те же данные в этом cs-файле. Однако с помощью web.config вы можете легко отредактировать это соединение, добавить дополнительные строки подключений к этому файлу и затем использовать ConnectionManager для захвата любой из этих строк подключения. Вы также можете зашифровать файл web.config.

0
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; 
     } 
    } 
} 
Смежные вопросы