1、连接SqlConnection

2、

3、执行命令SqlCommand

4、数据读取SqlDataReader

 注意:

ExecuteNonQuery() :执行非查询(增删改)

ExecuteScalar(): 执行查询,获取单个值,返回单行单列

ExecuteReader() :执行查询,获取多个值,返回多行多列

示例代码:

1.插入语句测试      ExecuteNonQuery() 方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//1.连接字符串
string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";
//2.创建连接对象
using(SqlConnection conn=new SqlConnection (constr))
{
//3.SQL 语句
string sql = "insert into test2 values('战狼') ";
//4.创建SQLcommand对象
using(SqlCommand cmd=new SqlCommand (sql,con))
{
//5.打开连接
conn.Open();
//6.执行
int r = cmd.ExecuteNonQuery();
Console.WriteLine("成功的插入了{0}行。", r);
}
}
Console.ReadKey();
}
}
}

2.查询,获取多个值    ExecuteReader()方法,返回类型datareader

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient; namespace _02
{
class Program
{
static void Main(string[] args)
{
//1.连接字符串
string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";
//2.创建连接对象
using (SqlConnection conn = new SqlConnection(constr))
{
//3.SQL 语句
string sql = "select * from StudentInfo";
//4.创建SQLcommand对象
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
//5.打开连接
conn.Open();
//6.执行
//通过调用ExecuteReader()方法,将给定的sql语句在服务器中执行。
//执行完毕后,服务器就已经查询出了数据。但是数据是保存在数据库服务器的内存当中。
//并没有返回给应用程序。知识返回给了应用程序一个reader对象,这个对象就是用来获取数据的对象。
using ( SqlDataReader reader = cmd.ExecuteReader())
{
//接下来就要通过reader对象一条一条获取数据
//1、在获取数据之前,先判断一下本次执行查询之后,是否查询到了数据
if (reader.HasRows)//属性HasRows判断是否结果集中有行
{
//2.有数据,那么接下来就要一条一条获取数据‘
//每次获取数据之前,都要先调用reader.Read()方法,向后移动一条数据,如果成功移到了某条数据上,则返回true,否则为FALSE
while(reader.Read())
{
//获取当前reader指向的数据(一行多列)
//reader.FieldCount,可以查询当前查询语句查询出列的个数。
for (int i = ; i < reader.FieldCount; i++)
{
Console.Write(reader[i] + " | "); }
Console.WriteLine();
}
}
else
{
Console.WriteLine("没有任何数据");
}
}
}
}
Console.ReadKey();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient; namespace _02
{
class Program
{
static void Main(string[] args)
{
//1.连接字符串
string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";
//2.创建连接对象
using (SqlConnection conn = new SqlConnection(constr))
{
//3.SQL 语句
string sql = "select * from StudentInfo";
//4.创建SQLcommand对象
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
//5.打开连接
conn.Open();
//6.执行
//通过调用ExecuteReader()方法,将给定的sql语句在服务器中执行。
//执行完毕后,服务器就已经查询出了数据。但是数据是保存在数据库服务器的内存当中。
//并没有返回给应用程序。知识返回给了应用程序一个reader对象,这个对象就是用来获取数据的对象。
using ( SqlDataReader reader = cmd.ExecuteReader())
{
//接下来就要通过reader对象一条一条获取数据
//1、在获取数据之前,先判断一下本次执行查询之后,是否查询到了数据
if (reader.HasRows)//属性HasRows判断是否结果集中有行
{
//2.有数据,那么接下来就要一条一条获取数据‘
//每次获取数据之前,都要先调用reader.Read()方法,向后移动一条数据,如果成功移到了某条数据上,则返回true,否则为FALSE
while(reader.Read())
{
//获取当前reader指向的数据(一行多列)
//reader.FieldCount,可以查询当前查询语句查询出列的个数。
for (int i = ; i < reader.FieldCount; i++)
{
//但是通过reader【】索引器,可以使用列名获取列的值
// Console.Write(reader[i] + " | "); Console.Write(reader["sid"] ); //根据列名称获取列的索引
//reader.Getordinal(); //GetValue()只能通过列索引来获取列的值
Console.Write(reader.GetValue(i) + " | "); }
Console.WriteLine();
}
}
else
{
Console.WriteLine("没有任何数据");
}
}
}
}
Console.ReadKey();
}
}
}

注意:

当遇到数据库中的null值的时候,通过Reader.GetValue()或者reader()索引器来获取列的值,

拿到的是DBNull.Value,不是C#的Null,而DBNull.Value的ToString()方法返回的空字符串,所以最终没有报错。

 //大多数用下面这种方法
//通过下面这种方式读取到的数据直接就是对应的类型,不是object类型,使用起来更方便。
reader.Getxxxxx()//使用强类型读取列中的数据

2、SqlDataReader

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient; namespace _02
{
class Program
{
static void Main(string[] args)
{
#region 版本1
////1.连接字符串
//string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";
////2.创建连接对象
//using (SqlConnection conn = new SqlConnection(constr))
//{
// //3.SQL 语句
// string sql = "select * from StudentInfo";
// //4.创建SQLcommand对象
// using (SqlCommand cmd = new SqlCommand(sql, conn))
// {
// //5.打开连接
// conn.Open();
// //6.执行
// //通过调用ExecuteReader()方法,将给定的sql语句在服务器中执行。
// //执行完毕后,服务器就已经查询出了数据。但是数据是保存在数据库服务器的内存当中。
// //并没有返回给应用程序。知识返回给了应用程序一个reader对象,这个对象就是用来获取数据的对象。
// using (SqlDataReader reader = cmd.ExecuteReader())
// {
// //接下来就要通过reader对象一条一条获取数据
// //1、在获取数据之前,先判断一下本次执行查询之后,是否查询到了数据
// if (reader.HasRows)//属性HasRows判断是否结果集中有行
// {
// //2.有数据,那么接下来就要一条一条获取数据‘
// //每次获取数据之前,都要先调用reader.Read()方法,向后移动一条数据,如果成功移到了某条数据上,则返回true,否则为FALSE
// while (reader.Read())
// {
// //获取当前reader指向的数据(一行多列)
// //reader.FieldCount,可以查询当前查询语句查询出列的个数。
// for (int i = 0; i < reader.FieldCount; i++)
// {
// //但是通过reader【】索引器,可以使用列名获取列的值
// // Console.Write(reader[i] + " | "); // Console.Write(reader["sid"]); // //根据列名称获取列的索引
// //reader.Getordinal(); // //GetValue()只能通过列索引来获取列的值
// // Console.Write(reader.GetValue(i) + " | "); // //大多数用下面这种方法
// //通过下面这种方式读取到的数据直接就是对应的类型,不是object类型,使用起来更方便。
// // reader.Getxxxxx()//使用强类型读取列中的数据 // }
// Console.WriteLine();
// }
// }
// else
// {
// Console.WriteLine("没有任何数据");
// }
// }
// }
//}
#endregion #region 版本2
string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";
using (SqlConnection conn = new SqlConnection(constr))
{
string sql = "select * from StudentInfo";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
//注意通过reader.GetXxxx()方式来获取表中的数据,如果数据为null,那么久报异常了,此时需要手动写代码来判断数据是否为null
while (reader.Read())
{
//sId, sName, sGender, sBirthday, sPhone, sEMail, cid
//打印每一列的值
Console.Write(reader.GetInt32() + "\t||\t");
Console.Write(reader.GetString() + "\t||\t");
Console.Write(reader.GetBoolean() + "\t||\t");
Console.Write(reader.GetDateTime() + "\t||\t"); Console.Write(reader.IsDBNull()?"NULL":reader.GetString()+ "\t||\t"); //Console.Write(reader.GetString(4) + "\t||\t");
Console.Write(reader.GetString() + "\t||\t");
Console.Write(reader.GetSqlInt32() + "\t||\t");
}
}
}
}
#endregion
Console.ReadKey();
}
}
}
}

ADO.NET复习总结(4)--访问SqlServer的类的更多相关文章

  1. ADO.NET复习总结(5)--工具类SqlHelper 实现登录

    工具类SqlHelper 即:完成常用数据库操作的代码封装 一.基础知识1.每次进行操作时,不变的代码: (1)连接字符串:(2)往集合存值:(3)创建连接对象.命令对象:(4)打开连接:(5)执行命 ...

  2. NX二次开发-NX访问SqlServer数据库(增删改查)C#版

    版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...

  3. Java jdbc访问sqlserver,oracle数据库

    1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...

  4. 使用JDBC访问SQLServer 2008

    使用JDBC访问SQLServer 2008 // 准备数据库驱动程序 String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriv ...

  5. asp.net学习之ado.net(连接模式访问)

    原文:asp.net学习之ado.net(连接模式访问)    ado.net框架支持两种模式的数据访问: 连接模式(Connected)和非连接模式(disconnected).这一节介绍如何使用连 ...

  6. Java jdbc访问sqlserver,oracle数据库 DEMO

    1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...

  7. Oracle透明网关访问SQLServer数据库

    针对oracle数据库不同实例之间的数据访问,我们可以直接通过dblink访问,如果oracle数据库想访问mysql/sqlserver等数据库的数据,我们可以通过配置oracle透明网关实现异构数 ...

  8. VS2019项目docker启动且访问SQLSERVER数据库配置

    VS2019编译.调试的Blazor纯前台项目,使用控制台启动,去连接纯后台的API项目,使用docker启动,并且通过EFCore访问SQLSERVER数据库,有几个地方需要修改配置: 一.前台连后 ...

  9. ADO.NET(完整修改和查询、实体类,数据访问类)

    一.完整修改和查询 在编写c#语句时需考虑到用户体验,例如在编写修改语句时,需要考虑到输入的内容在数据库中是否能够找到. 中间变量运用. 1.先查 2.执行操作 完整修改语句: bool has = ...

随机推荐

  1. Bash shell编程的语法知识点(1)

    Bash shell脚本编程知识点如下(初学,不全,欢迎讨论补充): shell简介 脚本的简单介绍 变量和引用 算术运算 交互式编程 选择判断 条件测试 循环 函数 shell简介 shell是一种 ...

  2. 第八章:Python基础の面向对象(二)

    本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ...

  3. Java 非线程安全的HashMap如何在多线程中使用

    Java 非线程安全的HashMap如何在多线程中使用 HashMap 是非线程安全的.在多线程条件下,容易导致死循环,具体表现为CPU使用率100%.因此多线程环境下保证 HashMap 的线程安全 ...

  4. DM企业建站系统v201710 sql注入漏洞分析 | 新版v201712依旧存在sql注入

    0x00 前言 本来呢,这套CMS都不想审的了.下载下来打开一看,各种debug注释,排版烂的不行. 贴几个页面看看 感觉像是新手练手的,没有审下去的欲望了. 但想了想,我tm就是新手啊,然后就继续看 ...

  5. vb实验7-找出小于18000的最大素数

    vb实验7-找出小于18000的最大素数 vb实验7-找出小于18000的最大素数 ---–写给女朋友的题解 在窗体上画一个文本框,名称为TEXT1,两个命令按钮,C1和 C2,标题分别为" ...

  6. ajax struts2 数据的返回形式

    这篇随笔算是接上篇的数据请求返回,上一篇关于分页用的返回的数据形式是json,http://www.cnblogs.com/tele-share/p/7192206.html这次主要探讨ajax从st ...

  7. 初学Vue之数量加减

    效果图: HTML: <div class="count3"> <ul> <li v-for="(key,idx) in liList&qu ...

  8. 异常笔记--java编程思想

    开一个新的系列,主要记一些琐碎的重要的知识点,把书读薄才是目的...特点: 代码少,概念多... 1. 基本概念 异常是在当前环境下无法获得必要的信息来解决这个问题,所以就需要从当前环境跳出,就是抛出 ...

  9. python 组合样例

    class Bill(): def __init__(self, description): self.description = description class Tail(): def __in ...

  10. springboot整合mybaits注解开发

    springboot整合mybaits注解开发时,返回json或者map对象时,如果一个字段的value为空,需要更改springboot的配置文件 mybatis: configuration: c ...