菜鸟级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[].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数据库打交道的简单总结的更多相关文章
- (火炬)MS SQL Server数据库案例教程
(火炬)MS SQL Server数据库案例教程 创建数据库: CREATE DATABASE TDB //数据库名称 ON ( NAME=TDB_dat,//逻辑文件名 在创建数据库完成之后语句中引 ...
- 在易语言中调用MS SQL SERVER数据库存储过程方法总结
Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...
- MS SQL Server数据库修复/MDF数据文件数据恢复/MDF质疑/mdf无法附加
微软的SQL Server 数据库最常用的有两种类型的文件: 1.主要数据文件,文件后缀一般是.MDF: 2.事务日志文件,文件后缀一般是.LDF. 用户数据表.视图.存储过程等等数据,都是存放在MD ...
- MS SQL Server数据库在线管理工具
MS SQL Server数据库以其优异的性能,被广泛使用,特别是政务,医疗行业.但是远程维护挺不方便的,目前有一款基于WEB的工具TreeSoft数据库管理系统. 免安装,直接解压就可以用了.直接通 ...
- MS SQL Server数据库查询优化技巧
[摘 要]本文主要是对MS SQL Server数据库查询优化技巧进行了说明和分析,对索引使用.查询条件以及数据表的设计等进行了阐述.中国论文网 http://www.xzbu.com/2/view- ...
- MS SQL Server 数据库分离-SQL语句
前言 今天在在清理数据库,是MS SQL Server,其中用到分离数据库文件.在这过程中,出现了一个小小的问题:误将数据库日志文件删除了,然后数据就打不开了,除了脱机,其他操作都报错. 数据库分离 ...
- MS Sql Server 数据库或表修复(DBCC CHECKDB)
MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令. 1. DBCC CHECKDB 重启服务器后,在没有进行任何操作的情况下,在SQL ...
- ASP.NET Excel导入Sql Server数据库(转)
先看界面图 实现的基本思想: 1,先使用FileUpload控件fuload将Excel文件上传到服务器上得某一个文件夹. 2,使用OleDb将已经上传到服务器上的Excel文件读出来,这里将Exce ...
- 提权案例(一)渗透某asp.net网站通过sql server数据库public 提权 思路分享
先罗列出sql server 角色用户的权限 按照从最低级别角色(bulkadmin)到最高级别角色(sysadmin)的顺序进行描述:1.bulkadmin:这个角色可以运行BULK INSERT语 ...
随机推荐
- string和stringbuilder的解剖
String和StringBuilder的深入解析 前言:本文出发点是我们开发的过程中是否真正的理解stringbuilder的使用,string字符串操作的是如何实现(哈希表),stringbu ...
- The internals of Python string interning
JUNE 28TH, 2014Tweet This article describes how Python string interning works in CPython 2.7.7. A fe ...
- 【ZZ】C 语言中的指针和内存泄漏 & 编写高效的C程序与C代码优化
C 语言中的指针和内存泄漏 http://www.ibm.com/developerworks/cn/aix/library/au-toughgame/ 本文讨论了几种在使用动态内存分配时可以避免的陷 ...
- 高级I/O之非阻塞I/O
http://www.cnblogs.com/nufangrensheng/p/3515035.html中曾将系统调用分成“低速”系统调用和其他系统调用两类.低速系统调用是可能会使进程永远阻塞的一类系 ...
- 实例源码--Android软件更新模块
下载源码 技术要点: (1) 通过网络检测服务器版本与本地版本 (2) 通过服务器下载最新版本 (3) 自动覆盖安装本地版本 详细介绍: 主要源码实现如下:
- laraval框架之数据库不可不吐槽的坑
最近做的项目一直在用laraval框架,有些地方确实很方便,但是有些方面实在是太坑了,就比如这次在数据库里,官方文档写的是 Take note that email is not a required ...
- [Javascript,JSON] JQuery处理json与ajax返回JSON实例
转自:http://www.php100.com/html/program/jquery/2013/0905/5912.html [导读] json数据是一种经型的实时数据交互的数据存储方法,使用到最 ...
- [PHP] Eclipse开发PHP环境配置
首先准备好软件: 1. Apache,到这里找个最新版本 2. PHP,到这里下载 3. Eclipse IDE for Java EE Developers,到这里下载 4. DLTK Core F ...
- SSIS 学习(7):包配置(下)【转】
经过前面几个章节的学习,我们开发的ETL包算已经完成一大半了,但是还不够完美,正如一场足球比赛,前面大家打得很辛苦,传接得也很漂亮,但 是临门一脚的技术不过关,进不了球,一切都是白搭.今天我们就来为大 ...
- 求教。。 为什么加载到servlet页面显示空白或者一直加载页面没显示也没错误?
package com.bean; public class Example7_2_Bean { String[] columnName;// 存放列名 String[][] tableRecord ...