ADO.NET五大对象增删改查使用
string ConnStr = "Data Source=.;Initial Catalog=ADO_DEMO;Integrated Security=True"; #region SqlConnection使用
//第一步:新建SqlConnection对象
SqlConnection SqlConn = new SqlConnection(); //设置SqlConnection对象的连接字符串;
SqlConn.ConnectionString = ConnStr; //如果用DataSet或者DataTable,可以不用打开数据库,否则必须打开数据库
SqlConn.Open();
#endregion #region SqlCommand对象的增、删、改操作
//新建SqlCommand对象
SqlCommand cmd = new SqlCommand(); //设置SqlCommand对象的Connection属性,即:SqlConn(SqlConnection类型的对象)
cmd.Connection = SqlConn; //如果是执行INSERT/UPDATE/DELETE的SQL语句,可以直接设置CommandText属性
//如果是执行存储过程,则必须设置CommandType属性为CommandType.StoredProcedure
cmd.CommandText = "INSERT INTO Ex_Class VALUES('1707A',19)"; //设置完Connection属性及CommandText属性后可以直接执行SQL语句
//cmd.ExecuteNonQuery(); //执行完成后要关闭数据库,并且释放资源
SqlConn.Close();
SqlConn.Dispose();
#endregion #region 利用SqlCommand对象和SqlDataReader对象获取数据(记录集)
//判断如果连接没有打开,是关闭状态,就打开数据库
if(SqlConn.State == ConnectionState.Closed)
{
SqlConn.ConnectionString = ConnStr;
SqlConn.Open();
} //新建SqlCommand对象
SqlCommand cmd_select = new SqlCommand(); //设置SqlCommand对象的Connection属性,即:SqlConn(SqlConnection类型的对象)
cmd_select.Connection = SqlConn; //如果是执行INSERT/UPDATE/DELETE的SQL语句,可以直接设置CommandText属性
//如果是执行存储过程,则必须设置CommandType属性为CommandType.StoredProcedure
cmd_select.CommandText = "SELECT * FROM Ex_Class"; //调用ExecuteReader方法并用SqlDataReader对象接收返回的记录;
SqlDataReader sdr = cmd_select.ExecuteReader(); //如果SqlDataReader返回的只有一条记录,可以用下面的方法来获取;
if(sdr.Read())
{
string ClassName = sdr["ClassName"].ToString();
int ClassCount = Convert.ToInt32(sdr["ClassCount"]); Response.Write(string.Format("SqlDataReader返回一条记录:ClassName:{0} ClassCount:{1}<br><br>", ClassName, ClassCount));
} //如果SqlDataReader返回的是多条记录,可以用下面的方法来获取记录,并存储集合
List<Model> DataList = new List<Model>();
while(sdr.Read())
{
Model m = new Model();
m.ClassName = sdr["ClassName"].ToString();
m.ClassCount = Convert.ToInt32(sdr["ClassCount"]);
DataList.Add(m);
} //然后可以使用集合中的数据,比如:
foreach(var p in DataList)
{
Response.Write(string.Format("SqlDataReader返回多条记录:ClassName:{0} ClassCount:{1}<br><br>", p.ClassName, p.ClassCount));
} //注意SqlDataReader使用完后要关闭和释放资料
sdr.Close();
sdr.Dispose();
SqlConn.Close();
SqlConn.Dispose();
#endregion #region 利用DataTable对象获取数据(记录集)
/*注意:如果DataTable获取记录,不用打开数据库,即Open()*/ SqlConn.ConnectionString = ConnStr; //新建SqlCommand对象
SqlCommand cmd_datatable = new SqlCommand(); //设置SqlCommand对象的Connection属性,即:SqlConn(SqlConnection类型的对象)
cmd_datatable.Connection = SqlConn; //如果是执行INSERT/UPDATE/DELETE的SQL语句,可以直接设置CommandText属性
//如果是执行存储过程,则必须设置CommandType属性为CommandType.StoredProcedure
cmd_datatable.CommandText = "SELECT * FROM Ex_Class"; //新建一个SqlDataAdapter对象,用来向DataTable填充数据
SqlDataAdapter sda = new SqlDataAdapter(); //设置SqlDataAdapter对象对应的SqlCommand对象
sda.SelectCommand = cmd_datatable; //新建一个DataTable对象,用来接收SqlDataAdapter对象传递过来的数据
DataTable dt = new DataTable(); //调用SqlDataAdapter对象的Fill方法,将数据填充到DataTable
sda.Fill(dt); //接下来可以使用DataTable中的数据,比如获取第一行的值:
string MyClassName = Convert.ToString(dt.Rows[]["ClassName"]);
int MyClassCount = Convert.ToInt32(dt.Rows[]["ClassCount"]); Response.Write(string.Format("DataTable返回一条记录:ClassName:{0} ClassCount:{1}<br><br>", MyClassName, MyClassCount)); //也可以使用foreach遍历DataTable中的数据
List<Model> DList = new List<Model>();
foreach(DataRow dr in dt.Rows)
{
Model Obj = new Model();
Obj.ClassName = Convert.ToString(dr["ClassName"]);
Obj.ClassCount = Convert.ToInt32(dr["ClassCount"]);
DList.Add(Obj); //或者直接输出值
Response.Write(string.Format("DataTable返回多条记录:ClassName:{0} ClassCount:{1}<br><br>", dr["ClassName"], dr["ClassCount"]));
} //如果用DataTable返回一个List类型,除了上面手工转换,还可以使用下面的方法
//注意:需要引入using Newtonsoft.Json命名空间 //第一步:将DataTable中的数据库序列化为一个字符串
var json = JsonConvert.SerializeObject(dt);
List<Model> NewList = new List<Model>(); //第二步:将序列化的字符串反序列化为一个List对象
NewList = JsonConvert.DeserializeObject<List<Model>>(json);
#endregion #region 利用SqlCommand调用存储过程
if (SqlConn.State == ConnectionState.Closed)
{
SqlConn.ConnectionString = ConnStr;
SqlConn.Open();
} //新建SqlCommand对象
SqlCommand cmd_proc = new SqlCommand(); //设置SqlCommand对象的Connection属性,即:SqlConn(SqlConnection类型的对象)
cmd_proc.Connection = SqlConn; //如果SqlCommand对象执行的是存储过程,则必需设置SqlCommand对象的CommandType为CommandType.StoredProcedure
cmd_proc.CommandType = CommandType.StoredProcedure; //设置SqlCommand对象调用的存储过程名称
cmd_proc.CommandText = "PROC_Ex_Class"; //设置存储过程需要的参数
//如果是输入参数需要直接赋值,如果是输出参数或者返回值,则只需要设置参数的Direction属性
SqlParameter sql_parm1 = new SqlParameter("@ClassName", SqlDbType.NVarChar, ); //设置输入参数的值
sql_parm1.Value = "1909B"; //将参数添加进SqlCommand对象的Parameters集合
cmd_proc.Parameters.Add(sql_parm1); //第2个参数
SqlParameter sql_parm2 = new SqlParameter("@ClassCount", SqlDbType.NVarChar, ); //设置输入参数的值
sql_parm2.Value = ; //将参数添加进SqlCommand对象的Parameters集合
cmd_proc.Parameters.Add(sql_parm2); //第3个参数:设置输出参数的Direction属性,无需设置值
SqlParameter sql_parm3 = new SqlParameter("@Info", SqlDbType.NVarChar, );
sql_parm3.Direction = ParameterDirection.Output;
cmd_proc.Parameters.Add(sql_parm3); //第4个参数:设置存储过程返回值的Direction属性,无需设置值
SqlParameter sql_parm4 = new SqlParameter("@ReturnVal", SqlDbType.NVarChar, );
sql_parm4.Direction = ParameterDirection.ReturnValue;
cmd_proc.Parameters.Add(sql_parm4); //调用SqlCommand对象的ExecuteNonQuery方法,执行存储过程
cmd_proc.ExecuteNonQuery(); //存储过程执行完成后,输出参数和返回值参数自动会被赋值 //这是存储过程的输出参数
string info = Convert.ToString(sql_parm3.Value); //这是存储过程的返回值
int returnval = Convert.ToInt32(sql_parm4.Value); //我们可以把两个结果输出
Response.Write(string.Format("存储过程执行结果:输出参数:{0},返回值:{1}", info, returnval));
#endregion
ADO.NET五大对象增删改查使用的更多相关文章
- Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新]
[虽然说,开发的时候,我们可以使用各种框架,ado.net作为底层的东西,作为一个合格的程序员,在出问题的时候我们还是要知道如何调试] 一.增删改查 cmd.ExecuteReader();执行查询, ...
- ADO.NET基础(增删改查)
ADO.NET是一种数据访问技术,就是将C#和MSSQL连接起来的一个纽带.可以通过ADO.NET将内存中的临时数据写入到数据库中,也可以将数据库中的数据提取到内存中供程序调用. ADO.NET是所有 ...
- jQuery 第四章 实例方法 DOM操作_基于jQuery对象增删改查相关方法
.next() .prev() .nextAll() .prevAll() .prevUntil() .nextUntli() .siblings() .children() .parent() .p ...
- C# ADO.NET 封装的增删改查
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- ADO.NET ORM数据库增删改查封装(工具一)
约束 public abstract class BaseModel { public int Id { get; set; } } 连接字符串 public static readonly stri ...
- ado.net C#如何实现数据库增删改查
ado.net数据库访问技术将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术也就是说是最麻烦但是是最不可缺少的 ...
- ado.net的简单数据库操作(三)——简单增删改查的实际应用
果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...
- Ado.net之对数据库的增删改查
一.了解Command对象 1.Command对象:封装了所有对外部数据源的操作,包括增删改查和执行存储过程,并在执行完成后返回合适的结果,同Connection一样,对于不同的数据源,Ado.net ...
- 在MFC里面使用ADO访问微软的ACCESS数据库 实现增删改查
声明:百度以外的公司可以自由转载该文. 正如我上一篇博文提到,ADO这货和MFC没有任何关系,ADO 是一个独立的组件.所以为了使用ADO 我们就要把ADO引入到MFC中. ADO是硬盘上的表现形式是 ...
随机推荐
- Charles中文破解版下载安装及使用教程(附带免费下载链接)
一. 简介及安装 Charles 是在 PC 端常用的网络封包截取工具,但它不仅仅能在pc端使用,还可以在手机ios和安卓端都可以使用.我们在做移动开发或者测试网页app时候,为了调试与服务器端的网络 ...
- M - Ordering Tasks(拓扑排序)
M - Ordering Tasks Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Descri ...
- 04 -- 元类和ORM
本篇主要介绍元类,为什么说一切皆对象:如何动态的创建类等:以及ORM,即什么是ORM等知识 一.元类 1.1 在Python中一切皆对象 在学习元类中我们首先需要了解一个概念-- python中一切皆 ...
- phpmyadmin教程
phpmyadmin教程 管理页进入phpmyadmin 打开C:\wamp\apps\phpmyadmin3.5.1下的配置文件:config.inc 修改密码创建与修改数据库.数据表 字段类型 I ...
- HDFS重启集群导致数据损坏,使用fsck命令修复过程
HDFS重启集群导致数据损坏,使用fsck命令修复过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们先看一组输出 [root@flume112 ~]# hdfs fsck / ...
- 2013.6.22 - OpenNE第二天
果然看中文材料就比较顺利,才半个小时就看完了一篇非常简单的综述<命名实体识别研究进展综述>(孙镇.王惠临).这个是2010年的文章,其实就是一个 科普文章,简述了国内外NER这块的历史如何 ...
- Eclips+ADT+SDK构建android开发环境及android自动化测试开发环境
一. 需要用到的包: 1.adt-bundle-windows-x86_64-20140702.zip+JDK+ant 2.ant下载地址:http://ant.apache.org/bindownl ...
- java基础(9)---静态方法和成员方法
一.方法: 方法的区别: 静态方法:有static方法 成员方法:没有static方法 方法的定义: 方法的调用:类.静态方法,对象.成员方法 一个MyClass类包含静态方法和成员方法: 静态方 ...
- 最小生成树:Tree
参考资料:https://blog.csdn.net/sunshinezff/article/details/48749453 Description 给你一个无向带权连通图,每条边是黑色或白色.让你 ...
- python中的logging日志模块
日志是程序不可或缺的一部分.它可以记录程序的运行情况,帮助我们更便捷地发现问题,而python中的logging日志模块给我们提供了这个机会. logging给我们提供了五种函数用来输出日志:debu ...