關於webform的簡單的基礎操作 2.學會開發(一)

   .net的B/S架構開發主要是MVC和webform的開發,因爲WebForm是微軟開發的一款產品,它將用戶的請求和響應都封裝爲控件。讓開發者認爲自己是在操作一個windows界面(和winform也是差不多的)。極大地提高了開發效率。而MVC是由視圖(view),控制器(controller),模型層三部分組成。所以它也是同時提供了對 HTML、CSS 和 JavaScript 的完全控制。兩者算是各有千秋,社會上都有着各種不一樣的看法,有的人認爲MVC比較好,也有人認爲用webform開發比較好。今天也是給大家帶來了webform的最基礎的整刪改查。

這是一張關於添加案例圖
在這裏插入圖片描述
第一步:搭建數據庫,數據庫的代碼我已經寫到了下面
在這裏插入圖片描述

CREATE DATABASE KUBLL
USE KUBLL

CREATE TABLE COUNTRY          --國家表
(
   CID INT PRIMARY KEY IDENTITY,
   GUOJIA VARCHAR(50)
)

CREATE TABLE BIAO            --景點表
(
   ID INT PRIMARY KEY IDENTITY,
   NAME VARCHAR(50),
   QUYU VARCHAR(20),
   PIAOJIA INT,
   COID INT FOREIGN KEY REFERENCES COUNTRY(CID),
   MIAOSHU VARCHAR(MAX),
   ZT VARCHAR(20)
)

新建項目
在這裏插入圖片描述
搭建三層框架
在這裏插入圖片描述
添加引用,DAL層(數據訪問層)引用MODER層(模型層),BLL層(業務邏輯層)引用DAL層和MODER層,而我自己建的這個項目生成的這個xinjian其實是UI層(界面層),他是可以引用BLL層和MODER層

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
再到各個層的命名空間上面引用
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
怎麼去寫MODER層(模型層)根據數據庫的字段去寫
在這裏插入圖片描述
接下來就是去寫DAL層(數據訪問層)拉一個DBHelper,下面是我的一個DBHelper的代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
using System.Reflection;
using System.Net;
using System.Net.Sockets;

namespace DAL
{
    public class DBHelper
    {
        private SqlConnection conn = null;
        /// <summary>
        /// 構造函數
        /// </summary>
        public DBHelper()
        {
            if (conn == null)
            {
                conn = new SqlConnection("Data Source=.;Initial Catalog=MVCWeek02;Integrated Security=True");
            }
        }
        /// <summary>
        /// 返回DataTable查詢結果
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="par"></param>
        /// <returns></returns>
        public DataTable GetTable(string sql, SqlParameter[] par = null)
        {
            try
            {
                SqlCommand com = new SqlCommand(sql, conn);
                if (par != null)
                {
                    com.Parameters.AddRange(par);
                }
                SqlDataAdapter ada = new SqlDataAdapter(com);
                DataTable dt = new DataTable();
                ada.Fill(dt);
                ada.Dispose();
                if (conn.State == ConnectionState.Open)
                {
                    this.Close();
                }
                return dt;
            }
            catch (Exception ex)
            {
                if (conn.State == ConnectionState.Open)
                {
                    this.Close();
                }
                throw;
            }
        }
        /// <summary>
        /// 返回List查詢結果
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="par"></param>
        /// <returns></returns>
        public List<T> GetToList<T>(string sql, SqlParameter[] par = null)
        {
            List<T> li = DataTableToList<T>(GetTable(sql));
            return li;
        }
        /// <summary>
        /// 返回查詢結果首行首列
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="par"></param>
        /// <returns></returns>
        public object ExecuteScalar(string sql, SqlParameter[] par = null)
        {
            try
            {
                this.Open();
                SqlCommand com = new SqlCommand(sql, conn);
                if (par != null)
                {
                    com.Parameters.AddRange(par);
                }
                return com.ExecuteScalar();
            }
            catch (Exception ex)
            {
                this.Close();
                throw;
            }
        }
        /// <summary>
        /// 返回執行結果受影響行數
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="par"></param>
        /// <returns></returns>
        public int ExecuteNonQuery(string sql, SqlParameter[] par = null)
        {
            try
            {
                this.Open();
                SqlCommand com = new SqlCommand(sql,conn);
                if (par != null)
                {
                    com.Parameters.AddRange(par);
                }
                return com.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                this.Close();
                throw;
            }
        }
        /// <summary>
        /// Table轉list集合
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        private static List<T> DataTableToList<T>(DataTable dt)
        {
            //初始化值
            List<T> result = new List<T>();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                T _t = (T)Activator.CreateInstance(typeof(T));
                PropertyInfo[] propertys = _t.GetType().GetProperties();
                foreach (PropertyInfo pro in propertys)
                {
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        if (pro.Name.Equals(dt.Columns[j].ColumnName))
                        {
                            if (dt.Rows[i][j] != DBNull.Value)
                            {
                                pro.SetValue(_t, dt.Rows[i][j], null);
                            }
                            else
                            {
                                pro.SetValue(_t, null, null);
                            }
                            break;
                        }
                    }
                }
                result.Add(_t);
            }
            return result;
        }
        /// <summary>
        /// 打開數據庫鏈接
        /// </summary>
        private void Open()
        {
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }
        }
        /// <summary>
        /// 關閉數據庫鏈接
        /// </summary>
        private void Close()
        {
            if (conn.State != ConnectionState.Closed)
            {
                conn.Dispose();
            }
        }
    }
}

改一下數據庫的名字
在這裏插入圖片描述
實例化DBHelper
在這裏插入圖片描述
創建添加方法,裏面寫上SQL添加在語句
在這裏插入圖片描述
再返回到數據庫中給國家表添加一些值
在這裏插入圖片描述
在DAL層中給國家表創建一個查詢所有數據的方法
在這裏插入圖片描述
BLL:先實例化DAL層,再到DAL層把所有的方法複製到BLL層中
在這裏插入圖片描述
然後就是到界面層去添加web窗體搭建界面
在這裏插入圖片描述
配置完就是這樣的
在這裏插入圖片描述
雙擊按鈕進入後臺
在這裏插入圖片描述
在這裏插入圖片描述
我們就是要在這裏去寫後臺代碼它和MVC的控制器作用是差不多的,先來綁定下拉
在這裏插入圖片描述
通過後臺進行傳值
在這裏插入圖片描述
後臺已經寫好了,現在運行一下看看效果
在這裏插入圖片描述
這個時候我們可以去數據庫中查看詳情
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章