使用 Ui 层和数据层最佳实践 asp.net C# 填充下拉列表和复选框列表

Populating dropdownlist and checkboxlist using Ui layer and Data Layer best practice asp.net C#

I am getting the result i want with the below code. but my question is am i doing it right? please post some modification if my code needs to be modified i am new in c# and trying to learn how to pass data from Ui layer to Data layer

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:DropDownList ID="ddList" runat="server"></asp:DropDownList>

        <asp:CheckBoxList ID="cbList" runat="server"></asp:CheckBoxList>

    </div>
    </form>
</body>
</html>

using System.Data.SqlClient;
using System.Data;


namespace test2
{
    public class Data
    {
        string connection = "Data Source=Test\SQLEXPRESS; Initial Catalog = RegistrationDB;Integrated Security=SSPI";

        SqlConnection conn = new SqlConnection();

        public Data()
        {

            conn.ConnectionString = connection;

        }


        public SqlConnection getConnection()
        {

            return conn;

        }

        public DataTable LoadCountry()
        {

            DataTable dtable = new DataTable();

            string select = "SELECT ID,country FROM dbo.Country";

            using (SqlConnection conn = new SqlConnection(connection))
            {

                SqlDataAdapter adapter = new SqlDataAdapter(select, conn);

                adapter.Fill(dtable);

                return dtable;

            }

        }


        public DataTable LoadChkboxList()
        {

            DataTable position = new DataTable();

            using (SqlConnection conn = new SqlConnection(connection))
            {

                string select = "SELECT ID,chkPosition FROM dbo.checkPosition";

                SqlDataAdapter adapter = new SqlDataAdapter(select, conn);

                adapter.Fill(position);

                return position;

            }


        }
    }
}




using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace test2
{
    public partial class UI : System.Web.UI.Page
    {
        Data datalayer = new Data();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {

                ddList.DataSource = datalayer.LoadCountry();
                ddList.DataTextField = "country";
                ddList.DataValueField = "ID";              
                ddList.DataBind();

                cbList.DataSource = datalayer.LoadChkboxList();
                cbList.DataTextField = "chkPosition";
                cbList.DataValueField = "ID";
                cbList.DataBind();

            }

        }
    }
}

一点修改

public DataTable getData(string query)
{
     DataTable dtable = new DataTable();
     using (SqlConnection con = new SqlConnection(YourConnectionString)){
         using (SqlCommand cmd = new SqlCommand(query,con){
              SqlDataAdapter adapter = new SqlDataAdapter(cmd);
              return adapter.Fill(dt);
         } 
     }
}

注意:您可以将上述函数放在一个class中,然后在您需要的地方调用。也可以修改为接受参数。为避免 SQL 注入,避免内联查询,使用存储过程(最好)。

DataTable dt Country = getData(YourQuery);

看:Parameterized Query and Stored Procedures