我有多年的ASP编程经验,但我是ASP.NET编程的新手。
我正在查看一个网站的代码,我注意到编写本网站的程序员与数据库建立了两个连接。一个在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不同?
答案 0 :(得分:1)
第一个不是连接。它只是连接字符串的声明。其他一些代码将使用连接字符串连接到数据库,可能使用与您习惯使用的ADODB类似的代码。
第二个是使用数据源控件。这是一个可以向另一个控件提供数据的控件。 ASP中没有类似的东西。它允许纯粹声明性的Web表单,您可以在一个控件中声明数据,并使用FormView或GridView控件来执行该操作,完成CRUD操作而不需要额外的代码。
我建议您从http://www.asp.net的教程开始。
答案 1 :(得分:0)
Web.config只是为了存储全局变量。在技术上,创建另一个类并在该cs文件中保存相同的数据没有任何问题。但是,使用web.config,您可以轻松编辑该连接,向该文件添加更多连接字符串,然后使用ConnectionManager来获取任何这些连接字符串。您还可以加密web.config文件。
答案 2 :(得分: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;
}
}
}