zoukankan      html  css  js  c++  java
  • 用PostGreSQL实现三层(复习)

    modal DAL,BLL都是类库的形式

    最终结果如下:

    image

    数据库代码:

    -- Table: student
    
    -- DROP TABLE student;
    
    CREATE TABLE student
    (
      name text NOT NULL,
      "number" integer NOT NULL,
      telephone text,
      CONSTRAINT "primary key" PRIMARY KEY (name)
    )

    插入

    INSERT INTO Student values('老大',20,'12121212')

    一、先建立modal

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace StudentModal
    {
        public class studentModal
        {
            public string Name { get; set; }
            public int Number { get; set; }
            public string TelePhone { get; set; }
        }
    }

    二、sqlhelper(问题:我把Server=127.0.0.1;Port=5432;User Id=postgres;Password=123456;Database=STUDENT;卸载app.config里面,却不能像mssql一样读取到)

    using Npgsql;
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Text;
    using Mono.Security;
    
    namespace StudentModal
    {
        
        public class studentHelper
        {
            //private static readonly string conStr = ConfigurationManager.ConnectionStrings["conSQL"].ToString();
            private static readonly string conStr = "Server=127.0.0.1;Port=5432;User Id=postgres;Password=123456;Database=STUDENT;";
            private List<studentModal> studentList = new List<studentModal>();
            //private string sql = "select * from Student";
            /// <summary>
            /// 得到所有数据----modal
            /// </summary>
            /// <param name="sql">sql语句</param>
            /// <param name="parameters">参数</param>
            /// <returns>模型</returns>
            public List<studentModal> getAllStudentInfo(string sql,params NpgsqlParameter[] parameters)
            {
                using(NpgsqlConnection con=new NpgsqlConnection(conStr))
                {
                    con.Open();
                    using (NpgsqlCommand cmd =new NpgsqlCommand())
                    {
                        cmd.Connection = con;
                        cmd.CommandText = sql;
                        cmd.Parameters.AddRange(parameters);
                        NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(cmd);
                        DataSet dataSet = new DataSet();
                        adapter.Fill(dataSet);
                        //从dataTable中读取数据形成modal
                        DataTable dataTable=dataSet.Tables[0];
                        int tableRow = dataTable.Rows.Count;
                        for (int i = 0; i < tableRow; i++)
                        {
                            studentModal student = new studentModal();
                            student.Name = dataTable.Rows[i]["Name"].ToString();
                            student.Number =Convert.ToInt32( dataTable.Rows[i]["Number"]);//需要处理为int
                            student.TelePhone = dataTable.Rows[i]["TelePhone"].ToString();
                            studentList.Add(student);
                        }
                        return studentList;
                    }
                }
            }
    
            ////转换为object或者为空
            //private object FromDBValue(this object obj)
            //{
            //    return obj == DBNull.Value ? null : obj;
            //}
            ///// <summary>
            ///// 转换为数据库中的null值
            ///// </summary>
            ///// <param name="obj"></param>
            ///// <returns></returns>
            //private object ToDBValue(this object obj)
            //{
            //    return obj == null ? DBNull.Value : obj;
            //}
    
        }
    }

    三、DAL

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Mono.Security;
    using StudentModal;
    
    namespace DAL
    {
        public class GetStudentInfo
        {
            /// <summary>
            /// 构建sql语句,然后得到数据
            /// </summary>
            string sql = "select * from ";
            public List<studentModal> GetAllStudentInfoDAL(string dataTable)
            {
                StudentModal.studentHelper studentHelper = new studentHelper();
                return studentHelper.getAllStudentInfo(sql+dataTable);
            }
        }
    }

    四、BLL

    using DAL;
    using StudentModal;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace BLL
    {
        public class StudentBLL
        {
            private string dataTable = "Student";
            /// <summary>
            /// 从DAL中得到所需数据,供UI调用
            /// </summary>
            /// <returns></returns>
            public List<studentModal> GetStudentListBLL()
            {
                DAL.GetStudentInfo studentInfo = new GetStudentInfo();
                return studentInfo.GetAllStudentInfoDAL(dataTable);
            }
            
        }
    }

    五、UI

            private void button1_Click(object sender, EventArgs e)
            {
                List<studentModal> studentListBLL = new List<studentModal>();
                BLL.StudentBLL studentBLL = new BLL.StudentBLL();
                studentListBLL= studentBLL.GetStudentListBLL();
                dataGridView1.Rows.Add(studentListBLL.Count);
                for (int j = 0; j < studentListBLL.Count; j++)
                {
                    studentModal studentModal = studentListBLL[j];
                    dataGridView1.Rows[j].Cells[0].Value = studentModal.Name;
                    dataGridView1.Rows[j].Cells[1].Value = studentModal.Number;
                    dataGridView1.Rows[j].Cells[2].Value = studentModal.TelePhone;
                    //dataGridView1.Rows.Add(1);
                }
            }
  • 相关阅读:
    Linux 配置gitee
    Linux C errno出错处理
    Linux C进程时间:墙上时钟时间,用户CPU时间,系统CPU时钟时间
    编译错误: 对‘aio_read’未定义的引用
    Linux 异步IO(AIO)
    Linux getaddrinfo获得本机ip地址为何127.0.1.1?
    Linux 文件截断的几种方式
    如何创建守护进程?
    守护进程, 协同进程, 僵尸进程, 孤儿进程概念理解
    对线程安全, 可重入函数, 异步安全的理解
  • 原文地址:https://www.cnblogs.com/shangguanjinwen/p/4146915.html
Copyright © 2011-2022 走看看