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的更多相关文章

  1. Oracle 应用于.NET平台

    1. 回顾ADO.NET ADO.NET是一组用于和数据源进行交互的面向对象类库集,它存在于.Net Framework中.通常情况下,数据源可以是各种类型的数据库,利用ADO.NET可以访问目前几乎 ...

  2. .NET基础操作回顾_使用ADO.NET操作SqlServer使用的类

    有些工具用的久了或者有新工具出现后,就慢慢的遗忘了很多,它们从熟悉的变成陌生,当然,对于我们来说不是好事吧. 今天回顾一下ADO.NET用到的MS的基础类库,先上代码(标准的SqlServer操作) ...

  3. ADO.NET基础巩固-----连接类和非连接类

          最近的一段时间自己的状态还是不错的,早上,跑步,上自习看书,下午宿舍里面编程实战,晚上要么练习代码,要么去打球(在不打就没机会了),生活还是挺丰富的. 关于C#的基础回顾就先到前面哪里,这 ...

  4. ADO与ADO.NET的区别与介绍

    1. ADO与ADO.NET简介ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用.高速度.低内存支出和占用磁盘空间较少,支持用于建立基 ...

  5. ADO和ADO.NET的区别

    1. ADO与ADO.NET简介 ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用.高速度.低内存支出和占用磁盘空间较少,支持用于建立 ...

  6. ADO.NET之使用DataGridView控件显示从服务器上获取的数据

    今天回顾下ADO.NET中关于使用DataGridiew控件显示数据的相关知识 理论整理: 使用 DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据. SqlDataAd ...

  7. ADO.NET知识的运用一(Day 26)

    哈哈,又到了总结的时间了,来回顾一下今天主要学了关于ADO.NET的哪些知识吧.(这次学的ADO访问数据库主要以访问SQL数据库为主) 理论:  首先我们要知道为什么要学习ADO.NET? 因为我们之 ...

  8. [转]一个普通IT人的十年回顾---金旭亮

    金旭亮老师十年体会,很有收获.转自网络. 金旭亮于1989年与超级解霸的开发者梁肇新同时迈入广西大学的校门,却走了一条与其不同的路. 1994年起开始自学计算机专业本科课程,并开始编程,从未间断,迄今 ...

  9. 金老师的经典著作《一个普通IT人的十年回顾》

    学习人生             -------一个普通IT人的十年回顾(上)序从1994到2003,不知不觉之间,我已在计算机技术的世界里沉浸了十年.有位哲人说过:如果一个人能用十年的时间专心致志地 ...

随机推荐

  1. Scala中的元组

    元组 元组使用()表示的数据结构 元组使用()表示的数据结构 还可以使用模式匹配访问 使用场景非常有限,用于函数返回值不止1个的情况下 看代码: /** * 元组 * @author Administ ...

  2. 关于TreeSet倒序排列和自定义排列

    本文部分转自:http://blog.csdn.net/kaituozhe345/article/details/6842945 1.TreeSet的自然排序. TreeSet存储对象的时候, 可以排 ...

  3. Share_memory

    共享内存是允许多个进程共享一块内存,由此来达到交换信息的进程通信机制:它很快没有中间介质,唯一的不足就是需要一定的同步机制控制多个进程对同一块内存的读/写,,它的原理如下: 每个共享内存段都有一个sh ...

  4. MSP430常见问题之IO端口类

    Q1:请问430 的I/O 中断能不能可靠的响应60ns 的脉冲信号, 就是来了一个60ns 的脉冲,430 的中断会有丢失吗?A1:端口支持的最高8M的时钟,无法响应这么快的频率. Q2:430是3 ...

  5. nodejs自己在项目中使用的一个工具库utils.js文件

    文件内容如下: /** * utils.js */ var crypto = require('crypto'); var url = require('url'); var querystring ...

  6. 纯CSS制作“跳动的心”demo

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  7. HTML-块级元素和内联元素

    HTML-块级元素和内联元素 块级元素 内联元素 address - 地址 block - 块引用 center - 居中对齐块(不推荐) dir - 目录列表(HTML5踢出) div - 常用的不 ...

  8. 关于css制作圆角

    三个阶段: 1.背景图片: 2.css2.0+标签模拟圆角: 3.css3.0圆角属性(border-radius). 1.1.背景图片--宽度固定,高度自适应圆角 为容器设置宽度 在主体的上方加一个 ...

  9. 谈在一个将TXT按章节分割的PHP程序中的收获

    最近在做一个自动分割txt小说的东西,能够将一整个txt文件按照章节进行分割,然后分解成一个个小的.txt文件保存起来并且能够获取有多少章节和每章的章节名. 我最初的想法是: ① 先使用fopen打开 ...

  10. PS基础学习 2---图层蒙版

    1,蒙版,字面意思上的理解就是:把底层图片上面加上一层图层蒙着,通过画笔工具控制底层图片和上面一层图层的显示效果.常用于图层的无缝隙合成. 我们可以先看一下下面的这个小例子,这个就是蒙版的一个小应用: ...