回顾Ado.Net
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
/// <summary>
///SqlHelper 的摘要说明
/// </summary>
public class SqlHelper
{
static string connStr = ConfigurationManager.ConnectionStrings["JSDB"].ConnectionString;
public SqlHelper()
{
}
public static int ExecuteNonquery(string cmdText,params SqlParameter[] ps)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand())
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(ps);
return cmd.ExecuteNonQuery();
}
}
}
public static object ExecuteScalar(string cmdText, params SqlParameter[] ps)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand())
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(ps);
return cmd.ExecuteScalar();
}
}
}
public static DataSet GetDsByAdapter(string cmdText, params SqlParameter[] ps)
{
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand())
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.Parameters.AddRange(ps);
using (SqlDataAdapter apt = new SqlDataAdapter(cmd))
{
apt.Fill(ds);
}
}
}
return ds;
}
public static SqlDataReader GetReader(string cmdText, params SqlParameter[] ps)
{
//using (SqlConnection conn = new SqlConnection(connStr))
//{
// using (SqlCommand cmd = new SqlCommand())
// { conn.Open();
// cmd.Connection = conn;
// cmd.CommandText = cmdText;
// cmd.Parameters.AddRange(ps);
// return cmd.ExecuteReader(CommandBehavior.CloseConnection);
// }
//}
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand();
conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; cmd.Parameters.AddRange(ps);
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
}
==============调用 /*
string sql = "insert into mytest (id,name) values(1,'abc')";
SqlHelper.ExecuteNonquery(sql);
*/
/*
string sql = "select * from mytest";
object obj = SqlHelper.ExecuteScalar(sql);
*/
/*
string sql = "select * from mytest";
DataSet obj = SqlHelper.GetDsByAdapter(sql);
*/
string sql = "select * from mytest";
SqlDataReader reader = SqlHelper.GetReader(sql);
Dictionary<string, string> dic = new Dictionary<string, string>();
while (reader.Read())
{
dic.Add(reader["Id"].ToString(),reader["Name"].ToString());
} |
|
ExecuteNonquery 用于 非查询操作,用于查询的操作,没有结果;如果sql中有查询的语句有非查询的语句,此操作返回所有insert update delete这些操作的影响行数;
ExecuteScalar 返回首行手列内容;不是说就不能执行 insert等操作,没问题,但是得不到反应的结果,数据能插入数据库没问题;多个操作,返回第一个有结果集操作的首行收列(比如 insert ...output或者select等) Adapter和reader返回 查询的结果,不是说不能执行 非查询操作,没问题数据照样执行,但是得不到任何反应; public class Comunicate
{
static string connStr = ConfigurationManager.AppSettings["connStr"].ToString();
public static void ExecuteNonquery()
{
//execurenonquery update delete insert 返回受这3中操作的影响的行数,【通过输出参数output可以输出一些内容】
// string sql = "insert into person (name ,age) values ('张三',25)";//插入一条数据,返回受影响行数1
// string sql = "select * from person";//-1
// string sql = "select * from person where name = 'shit'";//-1
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand())
{
// string sql = "InsertOutAge";//得到的还是受影响的行数1,没有得到age
//string sql = "InsertOutAgeTwo";
//string sql = "InserTsELECT";
string sql = "InserTsELECT3";//添加1行删除1行 ,影响结果是2
conn.Open();
cmd.Connection = conn;
cmd.CommandText = sql;
//存储过程的
//cmd.CommandType = CommandType.StoredProcedure;
//cmd.Parameters.Add("@name","李四");
//SqlParameter p = new SqlParameter();
//p.Direction = ParameterDirection.Output;
//p.ParameterName = "@age";
//p.SqlDbType = SqlDbType.Int;
//p.Size = 4;
//cmd.Parameters.Add(p);
int result = cmd.ExecuteNonQuery();//影响行数1
// object re = p.Value;//输出参数 92
}
}
}
public static void ExeceteScalar()
{
using (SqlConnection conn = new SqlConnection(connStr))
{
using (SqlCommand cmd = new SqlCommand())
{
//string sql = "select * from person";//返回首航受列内容
string sql = "insert into person(age) values(30);select * from person;select * from person where id>6";//多个操作返回多张表时,一第一个为准,返回首行首列内容
cmd.Connection = conn;
conn.Open();
cmd.CommandText = sql;
object resltu = cmd.ExecuteScalar();
}
}
}
public static void GetDataTable()
{
//可以执行insert操作,但是此方法只是用来得到 select的内容 // string sql = "insert into person (name,age) values ('阿杜',25);select * from person";//执行了insert 把select的fill到datatable
string sql = "insert into person (name,age) values ('阿杜',26)";//能狗插入数据成功
using (SqlDataAdapter apt = new SqlDataAdapter(sql,connStr))
{
DataTable dt = new DataTable();
apt.Fill(dt);
}
}
} |
回顾Ado.Net的更多相关文章
- Oracle 应用于.NET平台
1. 回顾ADO.NET ADO.NET是一组用于和数据源进行交互的面向对象类库集,它存在于.Net Framework中.通常情况下,数据源可以是各种类型的数据库,利用ADO.NET可以访问目前几乎 ...
- .NET基础操作回顾_使用ADO.NET操作SqlServer使用的类
有些工具用的久了或者有新工具出现后,就慢慢的遗忘了很多,它们从熟悉的变成陌生,当然,对于我们来说不是好事吧. 今天回顾一下ADO.NET用到的MS的基础类库,先上代码(标准的SqlServer操作) ...
- ADO.NET基础巩固-----连接类和非连接类
最近的一段时间自己的状态还是不错的,早上,跑步,上自习看书,下午宿舍里面编程实战,晚上要么练习代码,要么去打球(在不打就没机会了),生活还是挺丰富的. 关于C#的基础回顾就先到前面哪里,这 ...
- ADO与ADO.NET的区别与介绍
1. ADO与ADO.NET简介ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用.高速度.低内存支出和占用磁盘空间较少,支持用于建立基 ...
- ADO和ADO.NET的区别
1. ADO与ADO.NET简介 ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用.高速度.低内存支出和占用磁盘空间较少,支持用于建立 ...
- ADO.NET之使用DataGridView控件显示从服务器上获取的数据
今天回顾下ADO.NET中关于使用DataGridiew控件显示数据的相关知识 理论整理: 使用 DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据. SqlDataAd ...
- ADO.NET知识的运用一(Day 26)
哈哈,又到了总结的时间了,来回顾一下今天主要学了关于ADO.NET的哪些知识吧.(这次学的ADO访问数据库主要以访问SQL数据库为主) 理论: 首先我们要知道为什么要学习ADO.NET? 因为我们之 ...
- [转]一个普通IT人的十年回顾---金旭亮
金旭亮老师十年体会,很有收获.转自网络. 金旭亮于1989年与超级解霸的开发者梁肇新同时迈入广西大学的校门,却走了一条与其不同的路. 1994年起开始自学计算机专业本科课程,并开始编程,从未间断,迄今 ...
- 金老师的经典著作《一个普通IT人的十年回顾》
学习人生 -------一个普通IT人的十年回顾(上)序从1994到2003,不知不觉之间,我已在计算机技术的世界里沉浸了十年.有位哲人说过:如果一个人能用十年的时间专心致志地 ...
随机推荐
- Delphi 中的MD5实现方法(转)
在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法.而不需要再去找其它的DLL或是Pas了. 在Uses单元中引用 IdHashMe ...
- JMS - QueueBrowser
QueueBrowser 是一个专用对象,提供提前浏览 Queue 上的排队消息的功能,而实际上并没有真正消费这些消息.这是点对点消息传送模型的独有特性.从 QueueBrowser 获得消息是该队列 ...
- Linux 命令 - netstat: 检查网络设置及相关统计数据
netstat 程序可以用于查看不同的网络设置及数据.通过使用其丰富的参数选项,我们可以查看网络启动过程的许多特性. 命令格式 netstat [options] 命令参数 -r, --route 显 ...
- ContentProvider深度探索
如果你选择用SQLite数据库存储应用程序数据,我建议你创建ContentProvider,即使存储的数据仅供内部使用.原因是Android提供了一些工具类以及UI相关的类,它们的工作在Content ...
- Sqlserver 关于游标
对于sql来说查询的思维方式的面向集合对于游标来说:思维方式是面向行的 性能上:游标会吃更多内存,减少可见的并发,锁定资源等 当穷尽了while循环,临时表,表变量,自建函数,或其他方式仍然无法实现某 ...
- Cocos2d-x使用UserDefault数据持久化实例:保存背景音乐和音效设置
UserDefault可以实现数据的存储,但是它的使用不能泛滥,具体讲一般情况下不会使用它保存大量的数据,它没有SQL语句那样的灵活.UserDefault除了保存游戏设置外,还有可以长期保持游戏精灵 ...
- VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Small-Footprint Configuration
什么是Small-footprint? Small-footprint常见关键配置? 如何配置Small-footprint? 什么是Small-footprint? Small-footprint配 ...
- 《HTML5网页开发实例详解》连载(四)HTML5中的FileSystem接口
HTML 5除了提供用于获取文件信息的File对象外,还添加了FileSystem相关的应用接口.FileSystem对于不同的处理功能做了细致的分类,如用于文件读取和处理的FileReader和Fi ...
- 【HTML 5或CSS3入门教程】找兼职撰写人才
出版社要出版一套HTML 5和CSS 3方向的图书,目前急缺两名写作人员,要求1.熟悉CSS 3的各种属性,或熟悉HTML 5框架2.熟悉各种CSS代码,或熟悉各种HTML 5代码3.有写作的兴趣爱好 ...
- 【转】揭开Socket编程的面纱
对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1. 什么是TCP/IP.UDP?2. Sock ...