ADO.NET复习总结(4)--访问SqlServer的类
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的类的更多相关文章
- ADO.NET复习总结(5)--工具类SqlHelper 实现登录
工具类SqlHelper 即:完成常用数据库操作的代码封装 一.基础知识1.每次进行操作时,不变的代码: (1)连接字符串:(2)往集合存值:(3)创建连接对象.命令对象:(4)打开连接:(5)执行命 ...
- NX二次开发-NX访问SqlServer数据库(增删改查)C#版
版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...
- Java jdbc访问sqlserver,oracle数据库
1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...
- 使用JDBC访问SQLServer 2008
使用JDBC访问SQLServer 2008 // 准备数据库驱动程序 String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriv ...
- asp.net学习之ado.net(连接模式访问)
原文:asp.net学习之ado.net(连接模式访问) ado.net框架支持两种模式的数据访问: 连接模式(Connected)和非连接模式(disconnected).这一节介绍如何使用连 ...
- Java jdbc访问sqlserver,oracle数据库 DEMO
1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...
- Oracle透明网关访问SQLServer数据库
针对oracle数据库不同实例之间的数据访问,我们可以直接通过dblink访问,如果oracle数据库想访问mysql/sqlserver等数据库的数据,我们可以通过配置oracle透明网关实现异构数 ...
- VS2019项目docker启动且访问SQLSERVER数据库配置
VS2019编译.调试的Blazor纯前台项目,使用控制台启动,去连接纯后台的API项目,使用docker启动,并且通过EFCore访问SQLSERVER数据库,有几个地方需要修改配置: 一.前台连后 ...
- ADO.NET(完整修改和查询、实体类,数据访问类)
一.完整修改和查询 在编写c#语句时需考虑到用户体验,例如在编写修改语句时,需要考虑到输入的内容在数据库中是否能够找到. 中间变量运用. 1.先查 2.执行操作 完整修改语句: bool has = ...
随机推荐
- Git详解之七:自定义Git
自定义 Git 到目前为止,我阐述了 Git 基本的运作机制和使用方式,介绍了 Git 提供的许多工具来帮助你简单且有效地使用它. 在本章,我将会介绍 Git 的一些重要的配置方法和钩子机制以满足自定 ...
- C# 控件拖动
https://zhidao.baidu.com/question/2116834779399609987.html [DllImport("user32.dll", EntryP ...
- .Net WinForm 控件键盘消息处理剖析
在WinForm控件上我们可以看到很多关于键盘消息处理的方法,比如OnKeyDown, OnKeyPress, ProcessCmdKey, ProcessDialogKey,IsInputKey等等 ...
- Jenkins 学习笔记(三):我们的JAVA 项目是这么发布的
发布拓扑 1. 拓扑图 2. 流程说明: Git 插件从 Git Server 上面拉取源代码. Maven 插件将源代码安装我们设定的指令进行编译打包,存放于项目的 WorkSpace. Publi ...
- SpringMVC ModelAndView、Map、Model、ModelMap
目标方法返回值可以是ModelAndView .Map.Model.ModelMap类型,但最根本还都是ModelAndView. 其中可以包含试图和模型信息. SpringMVC 会把ModelAn ...
- TurnipBit口袋编程计算机:和孩子一起DIY许愿的流星
听说对着流星许愿,许的愿望都会实现,虽然不知道这个说法是不是真的,但是流星还是很好看的,为了能一直看到流星,今天就自己做一个流星保存下来,想什么时候看,就什么时候看. 首先需要想象一下流星是什么样子的 ...
- iconfont-字体图标
看到支付宝官网,使用很多iconfont-字体图标.素色,纯色,体积小,尝试使用做个demo,以便日后参考使用 ============================ <h1>第一个结构 ...
- 微信小程序实现简易留言板
微信小程序现在很火,于是也就玩玩,做了一个简易的留言板,让大家看看,你们会说no picture you say a j8 a,好吧先上图. 样子就是的,功能一目了然,下面我们就贴实现的代码,首先是H ...
- append和extend 的区别
l = ["zhy",666] l.extend(["edit","sdd"]) print(l) #['zhy', 666, 'edit' ...
- 【KMP模板】简单写个KMP~
本来easy的KMP 却一直过不了洛谷的模板题... 仔细一看原来在输出next数组时打的回车而不是空格... 身败名裂... 话说有个sunday貌似一般状况下比KMP快呢...去看看2333 #i ...