• !!!精简版三层架构


            private void button1_Click(object sender, EventArgs e)
            {
              //  三层架构      
     //UI界面层   数据访问层    业务逻辑层
    
    //UI界面层
                //查询数据有多少条
       int count =StudentDAL.GetCount();
                //根据ID删除数据
       StudentDAL.DeleteById(12);
    
                // 往数据库添加数据
    Student student=new Student();
    student.Id=16;
    student.Name="casc";
    student.Age=18;
    student.AiHao="cacs";
    student.Height=180.2m;
    student.Birthday=DateTime.Now;
    student.InDate=DateTime.Parse("1993-08-12");
      StudentDAL.Insert( student );
        
    
    //很据ID查询数据
    Student studnet=StudentDAL.GetById(16);
    txt1=student.Id;
    txt2=student.Name;
    txt3=student.Age;
    txt4=student.AiHao;
    txt5=student.Height;
    txt6=student.Birthday;
    txt7=student.InDate;
    

      

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace WindowsFormsApplication2
    {//数据访问层(  StudentDAL类  Student类  SqlHelper)
    
        //Student类
        class Student
        {
    
    
       
    
            public long Id
            {get;set;}
            public string Name
            {get;set;}
            public int Age
            {get;set;}
            public string AiHao
            {get;set;}
          
             public decimal? Height{get;set;}
             
    
               public DateTime? Birthday
               {get;set;}
               public DateTime?  InDate
               {get;set;}
    
            }
        }
    

      

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using WpfApplication2;

    namespace WindowsFormsApplication2
    {
    //StudentDAL类
    class StudentDAL
    {

    //输入值为null判断
    public static object Todbvalue(object value)
    {
    if(value==null)
    {
    return DBNull.Value;
    }
    else
    {
    return value;
    }

    }

    //数据库输出值为null判断
    public static object Fromdbvalue(object value)
    {
    if(value==DBNull.Value)
    {
    return null;
    }
    else
    {
    return value;
    }
    }

    //获取数据库数量

    public static int GetCount()
    {
    return (int)SqlHelper.ExecuteScalar("select count(*)from t_Student");

    }
    //根据id删数据
    public static void DeleteById(long id)
    {
    SqlHelper.ExecuteNonQuery("delete from t_student where id=@id",new SqlParameter("@id",id));
    }

    //添加数据库

    public static void Insert(Student student )
    {
    SqlHelper.ExecuteNonQuery("insert into T_student (name,age,aihao,height,birthday,indate)values(@name,@age,@aihao,@height,@birthday,@indate)",
    new SqlParameter("@name",student.Name),
    new SqlParameter("@age",student.Age),
    new SqlParameter("@aihao",student.AiHao),
    new SqlParameter("@height", Todbvalue(student.Height)),
    new SqlParameter("@birthday",Todbvalue(student.Birthday)),
    new SqlParameter("@indate",Todbvalue(student.InDate)));
    }

    //通过ID查询数据库
    public static Student GetById(long id)
    {
    DataTable table=SqlHelper.ExecuteDataTable("select*from t_student where id=@id",new SqlParameter("@id",id));

    if(table.Rows.Count<=0)
    {
    return null;
    }

    else if(table.Rows.Count>1)
    {
    throw new Exception("出异常啦");
    }
    else
    {

    DataRow row=table.Rows[0];

    Student student=new Student();
    student.Id=(long)row["id"];
    student.Name=(string)row["Name "];
    student.Age=(int)row[" Age"];
    student.AiHao=(string)row["AiHao"];
    student.Height=(decimal?)Fromdbvalue(row["height"]);
    student.Birthday=(DateTime?)Fromdbvalue(row["birthday"]);
    student.InDate = (DateTime?)Fromdbvalue(row["InDate"]);

    return student;



    }}}}

    App config 应用程序配置文件

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <connectionStrings>
        <add name="dbconnstr"  connectionString="server=.;Database=test;user=sa;pwd=32"/>
      </connectionStrings>
    </configuration>
    

      

    SqlHelper

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;

    namespace WpfApplication2
    {
    class SqlHelper
    {//调用APP.config配置文件中客户需要连接的数据库字符串
    private static string connStr = ConfigurationManager.ConnectionStrings["dbconnstr"].ConnectionString;

    //封装数据的原则 把不变的写到方法里,把变化的放到参数中

    // 增删改的操作
    public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
    {
    using (SqlConnection conn = new SqlConnection(connStr))//建立数据库联接 using释放空间
    {
    conn.Open();
    using (SqlCommand cmd = conn.CreateCommand())//创建操作数据库的命令
    {
    cmd.CommandText = sql;
    cmd.Parameters.AddRange(parameters);
    return cmd.ExecuteNonQuery();//执行操作的命令
    }
    }

    }
    // 查询返回一条结果的操作 如Count(*) ,sum()等..
    public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
    {
    using (SqlConnection conn = new SqlConnection(connStr))
    {
    conn.Open();
    using (SqlCommand cmd = conn.CreateCommand())
    {
    cmd.CommandText = sql;
    cmd.Parameters.AddRange(parameters); // foreach(SqlParameter param in parameters)
    //{
    // cmd.Parameters.Add(param);
    // }

    return cmd.ExecuteScalar();
    }
    }

    }
    // DataSet离线查询结果返回表结构操作: 一般项目操作里面只有一个表所以直接返回一个表更方便
    public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
    {
    using (SqlConnection conn = new SqlConnection(connStr))
    {
    conn.Open();
    using (SqlCommand cmd = conn.CreateCommand())
    {
    cmd.CommandText = sql;
    cmd.Parameters.AddRange(parameters);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet dataset = new DataSet();
    adapter.Fill(dataset);
    return dataset.Tables[0];
    }
    }

    }
    //DateSet 完整封装方式:
    //public static DataSet ExecuteDataSet(string sql,params SqlParameter[] parameters)
    //{using (SqlConnection conn=new SqlConnection(connStr))
    // {
    // conn.Open();
    // using(SqlCommand cmd=conn.CreateCommand())
    // {
    // cmd.CommandText=sql;
    // cmd.Parameters.AddRange(parameters);
    // SqlDataAdapter adapter=new SqlDataAdapter(cmd);
    // DataSet dataset=new DataSet();
    // adapter.Fill(dataset);
    // return dataset;
    // }
    // }
    //}


    ////ExcuteReader 大数据联接数据库查询
    //public static SqlDataReader ExcuteReader(string sql, params SqlParameter[] parameters)
    //{
    // using (SqlConnection conn = new SqlConnection(connStr))
    // {
    // conn.Open();
    // using (SqlCommand cmd = conn.CreateCommand())
    // {
    // cmd.CommandText = sql;
    // cmd.Parameters.AddRange(parameters);

    // return cmd.ExecuteReader();
    // }
    // }

    //}
    }
    }

  • 相关阅读:
    jQuery Easyui Datagrid相同连续列合并扩展
    Codeforces 240F. TorCoder 线段树
    java基础—Hashtable,HashMap,TreeMap的差别
    Android 屏幕适配扫盲、教程
    spring(13)------全面深入解析spring的AOP
    STL中的二分查找——lower_bound 、upper_bound 、binary_search
    闭包
    HDU 4193 Non-negative Partial Sums(单调队列)
    设计模式--基础学习总结
    代码坏味道特征反复的代码
  • 原文地址:https://www.cnblogs.com/ROCKyou/p/5035472.html
Copyright © 2020-2023  润新知