如何制作代码
string connStr = ConfigurationManager.ConnectionStrings "staceys_cakesConnectionString"].ConnectionString;
一般工作而不需要staceys_cakesConnectionString?或者我怎样才能将它设置在其他地方,所以我只需要在更改它时将其更改为一个位置?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace SC1.Models.DAL
{
public class CategoryDAL
{
public CategoryDAL()
{
}
string connStr = ConfigurationManager.ConnectionStrings["staceys_cakesConnectionString"].ConnectionString;
// select all
public DataSet Select()
{
SqlConnection sqlConnection1 = new SqlConnection();
string SqlString = "select * from Categories";
SqlDataAdapter da = new SqlDataAdapter(SqlString, connStr);
DataSet ds = new DataSet();
da.Fill(ds, "Categories");
return (ds);
}
// save
// insert
// update
// delete
}
}
页面功能示例我如何使用您的建议@Adam或其他任何人更好地制作这个功能?
// List
public List<page> Select()
{
List<page> _list = new List<page>();
string SqlStatement = "select * from Pages";
SqlConnection thisConnection = new SqlConnection(connStr);
// Open the Connection
thisConnection.Open();
var thisCommand = thisConnection.CreateCommand();
thisCommand.CommandText = SqlStatement;
SqlDataReader thisReader = thisCommand.ExecuteReader();
while (thisReader.Read())
{
// Create a new instance of the Current Page Object
page currentPage = new page();
// Fill the instance of the Current Page Object
currentPage.PageID = Convert.ToInt32(thisReader["PageID"]);
currentPage.ParentID = Convert.ToInt32(thisReader["ParentID"]);
currentPage.CategoryID = Convert.ToInt32(thisReader["CategoryID"]);
currentPage.Name = thisReader["Name"].ToString();
currentPage.PageHTMLContent = thisReader["PageHTMLContent"].ToString();
currentPage.NavigationText = thisReader["NavigationText"].ToString();
currentPage.TopMenu = Convert.ToBoolean(thisReader["TopMenu"]);
currentPage.SubMenu = Convert.ToBoolean(thisReader["SubMenu"]);
currentPage.DisplayOrder = Convert.ToInt32(thisReader["DisplayOrder"]);
currentPage.Active = Convert.ToBoolean(thisReader["Active"]);
// Add the instance of the Current Page Object to the List<>.
_list.Add(currentPage);
}
// Close the Database
thisConnection.Close();
return _list;
}
答案 0 :(得分:6)
只需使用常量。就此而言,只需使用静态属性并以此方式获取字符串。
public static class ConnectionStrings
{
public static string StacyesCakes
{
get
{
ConfigurationManager.ConnectionStrings[
"staceys_cakesConnectionString"].ConnectionString;
}
}
}
这将允许您执行以下操作:
using(var conn = new SqlConnection(ConnectionStrings.StaceysCakes))
{
...
}
或(只调整现有代码):
public DataSet Select()
{
SqlConnection sqlConnection1 = new SqlConnection();
string SqlString = "select * from Categories";
SqlDataAdapter da=new SqlDataAdapter(SqlString,ConnectionStrings.StaceysCakes);
DataSet ds = new DataSet();
da.Fill(ds, "Categories");
return (ds);
}
(您不需要sqlConnection1
;您没有在任何地方使用它。)
但请注意,由于SqlDataAdapter
实现了IDisposable
并且在执行此代码后您已完成它,因此应将其括在using
块中。
我会把你的函数改写成这样的东西:
public DataSet Select()
{
using(SqlDataAdapter da = new SqlDataAdapter(
"select * from Categories",
ConnectionStrings.StaceysCakes))
{
DataSet ds = new DataSet();
da.Fill(ds, "Categories");
return ds;
}
}
答案 1 :(得分:1)
在DataLayer中常用的类中使用const是个好主意:
public class CategoryDAL
{
public const string connStringName = "staceys_cakesConnectionString";
// the rest
}
并在您的课程中使用标识符connStringName
。
我已将其公开,以便在课堂外以CategoryDAL.connStringName
方式提供,但很少有必要这样做。
这可能看起来有点像只是改变了问题,但你获得了良好的智能感知和重构支持。
答案 2 :(得分:0)
根据您的应用程序类型,将其放在app.config或web.config文件中。然后,您可以使用ConfigurationManager类来访问它。
这是一个有用的link
答案 3 :(得分:0)
您可以在应用程序配置文件中保存ConnectionString。下一个链接更多地解释了它。