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[].Rows[]["unum"])?:Convert.ToInt32(ds.Tables[].Rows[]["unum"]);
mStuSum = Convert.IsDBNull(ds.Tables[].Rows[]["mnum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["mnum"]);
dStuSum = Convert.IsDBNull(ds.Tables[].Rows[]["dnum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["dnum"]);
mdStuSum = mStuSum + dStuSum;
lblUnderStuSum.Text = underStuSum.ToString();
lblMDStuSum.Text = mdStuSum.ToString(); /*获得的第二个表*/
singleRecruitsSum = Convert.IsDBNull(ds.Tables[].Rows[]["singlecompanynum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["singlecompanynum"]);
lblSingleRecruitsSum.Text = singleRecruitsSum.ToString(); /*获得的第三个表*/
int u = Convert.IsDBNull(ds.Tables[].Rows[]["unum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["unum"]);
int m = Convert.IsDBNull(ds.Tables[].Rows[]["mnum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["mnum"]);
int d = Convert.IsDBNull(ds.Tables[].Rows[]["dnum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["dnum"]);
singleProvidesSum = u + m + d;
lblSingleProvidesSum.Text = singleProvidesSum.ToString(); /*获得的第四个表*/
groupSum = Convert.IsDBNull(ds.Tables[].Rows[]["groupsum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["groupsum"]);
lblGroupSum.Text = groupSum.ToString(); /*获得的第五个表*/
groupCompanysSum = Convert.IsDBNull(ds.Tables[].Rows[]["groupcompanysum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["groupcompanysum"]);
lblGroupCompanysSum.Text = groupCompanysSum.ToString(); /*获得的第六个表*/
int gu = Convert.IsDBNull(ds.Tables[].Rows[]["unum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["unum"]);
int gm = Convert.IsDBNull(ds.Tables[].Rows[]["mnum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["mnum"]);
int gd = Convert.IsDBNull(ds.Tables[].Rows[]["dnum"]) ? : Convert.ToInt32(ds.Tables[].Rows[]["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 != )
ArticleType.Items.Clear();
SqlDataReader sdr = cmd.ExecuteReader();
ArticleType.DataSource = sdr;
ArticleType.DataTextField = "TypeName";
ArticleType.DataValueField = "TypeID";
ArticleType.DataBind();
conn.Close();
ArticleType.Items.Insert(, "请选择文章类型...");

菜鸟级asp.net 与ms sql server数据库打交道的简单总结的更多相关文章

  1. (火炬)MS SQL Server数据库案例教程

    (火炬)MS SQL Server数据库案例教程 创建数据库: CREATE DATABASE TDB //数据库名称 ON ( NAME=TDB_dat,//逻辑文件名 在创建数据库完成之后语句中引 ...

  2. 在易语言中调用MS SQL SERVER数据库存储过程方法总结

    Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...

  3. MS SQL Server数据库修复/MDF数据文件数据恢复/MDF质疑/mdf无法附加

    微软的SQL Server 数据库最常用的有两种类型的文件: 1.主要数据文件,文件后缀一般是.MDF: 2.事务日志文件,文件后缀一般是.LDF. 用户数据表.视图.存储过程等等数据,都是存放在MD ...

  4. MS SQL Server数据库在线管理工具

    MS SQL Server数据库以其优异的性能,被广泛使用,特别是政务,医疗行业.但是远程维护挺不方便的,目前有一款基于WEB的工具TreeSoft数据库管理系统. 免安装,直接解压就可以用了.直接通 ...

  5. MS SQL Server数据库查询优化技巧

    [摘 要]本文主要是对MS SQL Server数据库查询优化技巧进行了说明和分析,对索引使用.查询条件以及数据表的设计等进行了阐述.中国论文网 http://www.xzbu.com/2/view- ...

  6. MS SQL Server 数据库分离-SQL语句

    前言 今天在在清理数据库,是MS SQL Server,其中用到分离数据库文件.在这过程中,出现了一个小小的问题:误将数据库日志文件删除了,然后数据就打不开了,除了脱机,其他操作都报错. 数据库分离 ...

  7. MS Sql Server 数据库或表修复(DBCC CHECKDB)

    MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令.  1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL ...

  8. ASP.NET Excel导入Sql Server数据库(转)

    先看界面图 实现的基本思想: 1,先使用FileUpload控件fuload将Excel文件上传到服务器上得某一个文件夹. 2,使用OleDb将已经上传到服务器上的Excel文件读出来,这里将Exce ...

  9. 提权案例(一)渗透某asp.net网站通过sql server数据库public 提权 思路分享

    先罗列出sql server 角色用户的权限 按照从最低级别角色(bulkadmin)到最高级别角色(sysadmin)的顺序进行描述:1.bulkadmin:这个角色可以运行BULK INSERT语 ...

随机推荐

  1. python选择排序

    def select_sort(list): for i in range(len(list)): position = i for j in range(i,len(list)): if list[ ...

  2. 【剑指offer】近期公共祖先

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/28113959 剑指offer上的最后一题了,一个递归函数调了一下午,才得到正确的结果. 题 ...

  3. head first c&lt;11&gt;初探网络编程上

    server连接网络四部曲. 为了与外界沟通,c程序用数据流读写字节.比較经常使用的数据流有标准输入.标准输出.文件等. 假设想写一个与网络通信的程序.就须要一种新的数据流----------套接字. ...

  4. CAShapeLayer和CAGradientLayer

    两个动画效果来了解一下CALayer的两个重要的subClass,CAGradientLayer和CAShapeLayer. 微视录制视频的时候那个进度效果和Spark相机类似,但是个人还是比较喜欢S ...

  5. Android & Eclipse FAQ

    一.eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法 当我要格式化代码的时候,右键-source-format能够起效,但ctrl+shift+f不好使了. google之后来发 ...

  6. 通用超级强大的基于Oracle数据库的代码生成器

    项目中使用了Oracle数据库,命名基本规范为表名和字段名全部大写,用下划线分割各个单词: 如“BASE_USER_LOGON_EXTEND”这个表表示用户登录的扩展表. 基于这个规范,通用权限管理系 ...

  7. MPMoviePlayerController过期导致视频播放时间条颠倒及AVPlayerViewController的用法

    MPMoviePlayerController虽然好用 但是过期了 所以可能会导致一些莫名的问题  ,比如说下面时间条的问题 但我们可以使用AVPlayerViewController来实现相应的想过 ...

  8. 实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法

    实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法 #import <Found ...

  9. Hashtable 和 HashMap 的比较

        Hashtable HashMap 并发操作 使用同步机制, 实际应用程序中,仅仅是Hashtable本身的同步并不能保证程序在并发操作下的正确性,需要高层次的并发保护. 下面的代码试图在ke ...

  10. Ionic条码扫描

    http://m.blog.csdn.net/article/details?id=45843819