我是初学者并编写代码以使用Asp.Net和c#在Gridview中显示数据。我想知道我所遵循的方法是否正确。我想要标准和架构问题的建议,我的代码的最佳实践,以便我可以相应地修改我的代码。感谢您提出的很棒的建议和代码。
连接代码:
public class DemoProjConnectionClass
{
public SqlConnection DemoProjConnection()
{
SqlConnection con = new SqlConnection("Data Source=Localhost;Initial Catalog=master;Integrated Security=True");
return con;
}
}
域代码(获取和设置):
public class DemoProjDomainClass
{
public int EmpId { get; set; }
public string EmpName { get; set; }
public int Salary { get; set; }
}
类库代码:
public class DemoProjServiceClass
{
public IList<DemoProjDomainClass> getDemoProjList()
{
string sqlDemoProjList;
sqlDemoProjList = "SELECT EmpId,EmpName,Salary from Employee";
DemoProjConnectionClass x = new DemoProjConnectionClass();
SqlConnection con = x.DemoProjConnection();
con.Open();
SqlCommand cmd = new SqlCommand(sqlDemoProjList, con);
cmd.CommandType = CommandType.Text;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "tempTable1");
IList<DemoProjDomainClass> DemoProjList = new List<DemoProjDomainClass>();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DemoProjDomainClass _obj = new DemoProjDomainClass();
_obj.EmpId = Convert.ToInt16(ds.Tables[0].Rows[i][0]);_obj.EmpName = ds.Tables[0].Rows[i][1].ToString();_obj.Salary = Convert.ToInt16(ds.Tables[0].Rows[i][2]);DemoProjList.Add(_obj);
}
return DemoProjList;
}
}
用户界面代码
protected void Page_Load(object sender, EventArgs e)
{
DemoProjServiceClass ob=new DemoProjServiceClass();
GridView1.DataSource = ob.getDemoProjList();
GridView1.DataBind();
}
答案 0 :(得分:5)
我建议你:
在asp.net网站上查看此tutorial
答案 1 :(得分:3)
连接代码:
我不会像这样对连接字符串进行硬编码。我会将它保存在配置文件(web.config或者......)中并从那里读取,以便我可以随时根据需要重新编译来更改连接字符串。
类库代码
您的getDemoProjList方法没有任何异常处理。我将使用using语句包装该代码,以便我不必担心关闭我的连接
<强> UI 强>
我不认为您应该在PageLoad中加载数据而不检查它是否是回发。因此将使用isPostBAck属性checkk。我还会在将其绑定为网格的数据源之前进行空检查。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DemoProjServiceClass ob=new DemoProjServiceClass();
List<DemoProjDomainClass> objList=ob.getDemoProjList();
if(objList!=null)
{
GridView1.DataSource = objList;
GridView1.DataBind();
}
}
}
答案 2 :(得分:1)
不是真的。 从这个角度来看,您需要的是数据访问层。 http://martinfowler.com/eaaCatalog/ 使用数据源架构模式项。 关于代码连接,大部分时间不应该硬编码,而是在某种配置文件中定义。 让我们假设Domain很好,但是大部分时间你需要实现Domain模式,如果你有一些域模型的额外逻辑,那么在目录中也会有更多描述。 由于可能的SQL注入,避免对sql查询进行硬编码,在适当的地方使用Disposable模式(在C#开发方面使用“using”关键字)。对于主要情况,ORM可以很好地完成基本功能甚至更多,因此使用SqlCommand只有两个很好的理由: 当您获得最佳表现或学习基础知识时。也有缺点。您的可维护性降低,代码量增加。 从我的预期ASP.Net MVC为您提供高度可维护和可配置的代码级别。这就是为什么你真的可以关注它。但这取决于你是否这样做。
答案 3 :(得分:0)
对于您的连接代码,将SqlConnection括号内的所有内容移动到您的webconfig中,如下所示:
<connectionStrings>
<add name="abcConnectionString" connectionString="Data Source=Localhost;Initial Catalog=master;Integrated Security=True providerName="System.Data.SqlClient" />
</connectionStrings>
然后在你的代码中引用它:
using System.Configuration;
string connStr = ConfigurationManager.ConnectionStrings["abcConnectionString"].ConnectionString;
SqlConnection Con = new SqlConnection(connStr);
答案 4 :(得分:0)
使用Enterprise库处理您的数据访问代码。