zoukankan      html  css  js  c++  java
  • 菜鸟级asp.net 与ms sql server数据库打交道的简单总结

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

    上面是必须的

    下面说的都是用存储过程

    首先是webconfig里面的连接字符串:

      <connectionStrings>
        <add name="StatisticsConnectionString" connectionString="data source=.;Initial Catalog=Statistics;Integrated Security=true;" providerName="System.Data.SqlClient" />
      </connectionStrings>
    Web.config

    其次是自己写的最简单的连接数据库的类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Data.SqlClient;
    
    
    namespace Mystatistics
    {
        /// <summary>
        /// 连接数据库的类
        /// </summary>
        public class DBLink
        {
            public static SqlConnection GetConnection()
            {
                SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["StatisticsConnectionString"].ConnectionString);
                return conn;
            }
        }
    }
    DBLink

    然后是一个简单的绑定控件,其实这是从数据库里面获得了一个表,放到了datatable中

            SqlConnection conn = DBLink.GetConnection();   //连接
            conn.Open();
    
            SqlCommand cmd = new SqlCommand();    //命令
            cmd.Connection = conn;
            cmd.CommandType = CommandType.StoredProcedure;    //指定命令类型是存储过程
            cmd.CommandText = "procMajorsByinstituteIdSelect";   //存储过程名
            cmd.Parameters.Add(new SqlParameter("@inInstituteId", instituteId));   //存储过程用到的参数,可以按这个一直添加
    
            SqlDataAdapter sda = new SqlDataAdapter(cmd);   //相当于内存里的datatable和从数据库获得的结果之间的桥梁
            DataTable dt = new DataTable();   //这个表装从数据库获得的数据,相当于本机内存里面的一个表
            sda.Fill(dt);  //填充
    
            /*从datatable绑定,并设置*/
            ddlMajor.DataValueField = "majorId";   //值,这两个字符串来自数据库select语句
            ddlMajor.DataTextField = "majorName";   //显示文字
            ddlMajor.DataSource = dt;
            ddlMajor.DataBind();  //绑定控件
    
            /*最后释放资源*/
            dt.Dispose();
            sda.Dispose();
            cmd.Dispose();   //释放
            conn.Close();   //关闭

    下面是存储过程获得了多个表的处理,注意几点:1.dataset  2.dataset到datatable  3.datatable获得指定行列的值  4.select语句没有结果的处理

            SqlConnection conn = DBLink.GetConnection();
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "procGetMonthReport";   //存储过程名
            cmd.Parameters.Add(new SqlParameter("@startTime", startTime));
            cmd.Parameters.Add(new SqlParameter("@endTime", endTime));
    
            SqlDataAdapter sda= new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();   //这个cmd 获得的结果是多个表,用dataset装
            sda.Fill(ds);
    
            /*处理获得的数据,注意若select没有结果但是想显示为0的强制转换的话会出现异常*/
            /*获得的第一个表*/
            underStuSum = Convert.IsDBNull(ds.Tables[0].Rows[0]["unum"])?0:Convert.ToInt32(ds.Tables[0].Rows[0]["unum"]);
            mStuSum = Convert.IsDBNull(ds.Tables[0].Rows[0]["mnum"]) ? 0 : Convert.ToInt32(ds.Tables[0].Rows[0]["mnum"]);
            dStuSum = Convert.IsDBNull(ds.Tables[0].Rows[0]["dnum"]) ? 0 : Convert.ToInt32(ds.Tables[0].Rows[0]["dnum"]);
            mdStuSum = mStuSum + dStuSum;
            lblUnderStuSum.Text = underStuSum.ToString();
            lblMDStuSum.Text = mdStuSum.ToString();
    
            /*获得的第二个表*/
            singleRecruitsSum = Convert.IsDBNull(ds.Tables[1].Rows[0]["singlecompanynum"]) ? 0 : Convert.ToInt32(ds.Tables[1].Rows[0]["singlecompanynum"]);
            lblSingleRecruitsSum.Text = singleRecruitsSum.ToString();
    
            /*获得的第三个表*/
            int u = Convert.IsDBNull(ds.Tables[2].Rows[0]["unum"]) ? 0 : Convert.ToInt32(ds.Tables[2].Rows[0]["unum"]);
            int m = Convert.IsDBNull(ds.Tables[2].Rows[0]["mnum"]) ? 0 : Convert.ToInt32(ds.Tables[2].Rows[0]["mnum"]);
            int d = Convert.IsDBNull(ds.Tables[2].Rows[0]["dnum"]) ? 0 : Convert.ToInt32(ds.Tables[2].Rows[0]["dnum"]);
            singleProvidesSum = u + m + d;
            lblSingleProvidesSum.Text = singleProvidesSum.ToString();
    
            /*获得的第四个表*/
            groupSum = Convert.IsDBNull(ds.Tables[3].Rows[0]["groupsum"]) ? 0 : Convert.ToInt32(ds.Tables[3].Rows[0]["groupsum"]);
            lblGroupSum.Text = groupSum.ToString();
    
            /*获得的第五个表*/
            groupCompanysSum = Convert.IsDBNull(ds.Tables[4].Rows[0]["groupcompanysum"]) ? 0 : Convert.ToInt32(ds.Tables[4].Rows[0]["groupcompanysum"]);
            lblGroupCompanysSum.Text = groupCompanysSum.ToString();
    
            /*获得的第六个表*/
            int gu = Convert.IsDBNull(ds.Tables[5].Rows[0]["unum"]) ? 0 : Convert.ToInt32(ds.Tables[5].Rows[0]["unum"]);
            int gm = Convert.IsDBNull(ds.Tables[5].Rows[0]["mnum"]) ? 0 : Convert.ToInt32(ds.Tables[5].Rows[0]["mnum"]);
            int gd = Convert.IsDBNull(ds.Tables[5].Rows[0]["dnum"]) ? 0 : Convert.ToInt32(ds.Tables[5].Rows[0]["dnum"]);
            groupProvidesSum = gu + gm + gd;
            lblGroupProvidesSum.Text = groupProvidesSum.ToString();
    
            ds.Dispose();
            sda.Dispose();
            cmd.Dispose();
            conn.Close();

     下面是没有用存储过程的:

            SqlConnection conn = DBLink.GetConnection();
            conn.Open();
            SqlCommand cmd = new SqlCommand("select TypeID,TypeName from ArticleType", conn);
            if (ArticleType.Items.Count != 0)
                ArticleType.Items.Clear();
            SqlDataReader sdr = cmd.ExecuteReader();
            ArticleType.DataSource = sdr;
            ArticleType.DataTextField = "TypeName";
            ArticleType.DataValueField = "TypeID";
            ArticleType.DataBind();
            conn.Close();
            ArticleType.Items.Insert(0, "请选择文章类型...");
  • 相关阅读:
    我的物联网项目(七)前期线上事故
    我的物联网项目(六)推广策略
    我的物联网项目(五)下单渠道
    我的物联网项目(四)订单系统
    我的物联网项目(三)平台架构
    我的物联网项目(二)初建团队
    我的物联网项目(一)开端
    從需求分析開始
    提升GDI画图的效率
    C#写COM组件,JS调用控件
  • 原文地址:https://www.cnblogs.com/jiayith/p/3461190.html
Copyright © 2011-2022 走看看