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. jq 中each的用法 (share)

    each的使用方法 在jQuery里有一个each方法,用起来非常的爽,不用再像原来那样写for循环,jQuery源码里自己也有很多用到each方法.其实jQuery里的each方法是通过js里的ca ...

  2. Angular5系列教程:ng-book2-angular-5-r66 土家翻译,话糙理不糙

    嗯, 在工作还辣么忙之时,看了这本书,感觉很不错.想分享给国内朋友们.结合自己的理解和整理加翻译,可能有点糙,但是,话糙理不糙嘛.出系列,不知道会不会弃坑,不立Flag了.持续更新.....我会放在印 ...

  3. python编辑器pydev安装

    pydev实际上时eclipse的插件 1.安装eclipse(1)eclipse不需要安装,解压文件夹,点击eclipse.exe可使用 2.安装pydev (1) 解压pydev可看到featur ...

  4. Mysql查询不为null值

    Mysql本以为查询不为null就是!=null可是结果查询出来什么都没有,后来才发现不为null应该是is not null ,为null应该是is null.

  5. Flask分页

    一.flask实现的分页组件 from urllib.parse import urlencode,quote,unquote class Pagination(object): "&quo ...

  6. LAMP源码安装,搭建zabbix监控

    #LAMP#httpd-2.2.32#mysql-5.7.17-linux-glibc2.5-x86_64 二进制压缩版#php5.3.27 1.系统环境优化检查 sed -i 's/SELINUX= ...

  7. Java JSON数据处理

    比方说要处理这么 {"data":[{"salt":"","plaintext":"xiaoxu", ...

  8. MySQL innodb_flush_method

    innodb_flush_method这个参数控制着innodb数据文件及redo log的打开.刷写模式,对于这个参数,文档上是这样描述的: 有三个值:fdatasync(默认),O_DSYNC,O ...

  9. Kotlin——从无到有系列教程(5): 你该知道的Kotlin可空类型、空安全(null)、类型转换等特性

    在我们熟知的Java中,定义一个变量可以默认不赋值,因为Java的系统会给我们默认赋一个默认值,并且Java可定义一个赋值为null的变量,这样在使用这个变量的时候都会去显示判断该变量是否为null. ...

  10. 内核知识第八讲,PDE,PTE,页目录表,页表的内存管理

    内核知识第八讲,PDE,PTE,页目录表,页表的内存管理 一丶查看GDT表. 我们通过WinDbg + 虚拟机可以进行双机调试.调试一下看下GDT表 我们知道,GDT表中.存储的是存储段信息. 保存了 ...