C#学习记录(47)MSSQL数据库

2023-11-19

引言

      微软数据库是针对中小型企业的关系型数据库,操作简单易上手。首先介绍下C#.NET的数据库,以 ActiveX 数据对象(ADO)为基础 以 XML(扩展标记语言)为格式传送和接收数据:

            C#.NET应用程序  <----->ADO.NET<----->数据库

程序中使用System.Data 命名空间。

一. ADO.NET的框架:

       NET Framework数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件。使用它,我们可以连接数据库、执行命令和检索数据,直接对数据库进行操作。
       DataSet(数据集)是专门为独立于任何数据源的数据访问而设计。使用它,我们可以不必直接和数据库打交道,可以大批量地操作数据,也可以将数据绑定在控件上。

.NET通过以下的对象来进行数据库的操作:
(1)Connection        建立与数据源的连接
(2)Command         对数据源执行操作命令
(3)DataReader      从数据源中读取只进且只读的数据流
(4)DataAdapter     用数据源填充DataSet并解析更新

1.Connection

Connection对象的主要属性和方法
属 性                                          说 明
ConnectionString                   用于连接数据库的连接字符串
方 法                                         说 明
Open()                              使用ConnectionString属性所指定的设置打开数据库连接
Close()                              关闭与数据库的连接

(1) 定义连接字符串(可以直接在第(2)步中编写)
不同的数据库连接字符串格式不同,SQL Server数据库的连接字符串格式一般为:
            Data Source=服务器名;Initial Catalog=数据库名; User ID=用户名;Pwd=密码
例如,要连接本机的pubs数据库,连接字符串写成:
            string connString = "Data Source=.;Initial Catalog=pubs;User ID=sa";
经验:
    服务器如果是本机,可以输入“.”来代替计算机名称或者IP地址。密码如果为空,可以省略Pwd一项。

(2). 创建 Connection 对象
调用定义好的连接字符串创建Connection 对象。
SqlConnection connection = new SqlConnection(connString);
(3). 打开与数据库的连接
调用Connection 对象的Open()方法打开数据库连接。
connection.Open( );

(4) 关闭数据库的连接

Connection.Close();

string connString = "Data Source=.;Initial Catalog=db_MrCy;UserID=sa;pwd=sa";
SqlConnection connection = new SqlConnection(connString);
// 打开数据库连接
connection.Open();
MessageBox.Show("打开数据库连接成功");
// 关闭数据库连接
connection.Close();
MessageBox.Show("关闭数据库连接成功");

2.使用Command对象
      打开数据库连接后,怎样操作数据呢?这就需要Command对象(命令对象),Command对象可以对数据库执行增删改查的命令。

Command对象的主要属性和方法
属 性                                       说 明
Connection                      Command对象使用的数据库连接
CommandText                执行的SQL语句
方 法                                       说 明
ExecuteNonQuery()   执行不返回行的语句,如update、delete等
ExecuteReader()        执行程序命令,返回DataReader对象

ExecuteScalar()         返回单个值,如执行count(*)等

ExecuteScalar()方法只返回查询结果的第一行第一列的值,所以当我们的查询结果只有一个值时,通常使用这个方法。方法的返回值要进行显式类型转换。
要使用Command对象,必须有一个已经连接的Connection对象,使用Command对象的步骤包括:
(1)创建数据库连接
         按照上节介绍的步骤创建一个Connection对象。
(2)定义执行的SQL语句
         将对数据库执行的SQL语句赋给一个字符串。
(3)创建Command对象
         使用已有的Connection对象和SQL语句串创建一个Command对象。
(4)执行SQL语句
         使用Command对象的某个方法执行命令。

connection.Open(); // 打开数据库连接

SqlCommand command = new SqlCommand(sql, connection);  // 创建Command 对象

num = (int)command.ExecuteScalar();  // 执行SQL 查询

message = string.Format("tb_Waiter表中共有{0}条员工信息!",num);
MessageBox.Show(message,"查询结果",MessageBoxButtons.OK,MessageBoxIcon.Information);

3.DataReader对象查询、增删改数据

使用DataReader对象可以从数据库中检索只读数据,它每次从查询结果中读取一行到内存中,所以使用DataReader对数据库进行操作非常快。DataReader属于.NET Framework数据提供程序。

DataReader对象的主要属性和方法
属 性                说 明
HasRows         是否返回了结果
FieldCount      当前行中的列数
方 法                说 明
Read()        前进到下一行记录
Close()       关闭 DataReader 对象

使用DataReader的步骤:
1. 创建Command对象

sql是查询、增改删语句。

SqlCommand command = new SqlCommand(sql, connection);  // 创建Command 对象
2. 调用Command对象的ExecuteReader()方法创建DataReader对象
SqlDataReader dataReader = command.ExecuteReader();
3. 使用 DataReader 的 Read() 方法逐行读取数据这个方法返回一个布尔值,如果能读到一行记录,就返回True,否则返回False。
dataReader.Read();
4. 读取某列的数据,(type)dataReader[ 列名或序列号]像读取数组一样,用方括号来读取某列的值,如(string)dataReader["WaiterName"];  方括号可以像数组一样使用列的索引,从0开始,也可以使用列名,取出的值要进行类型转换。
5. 关闭 DataReader 对象
使用dataReader对象读取数据的时候会占用数据库连接,必须用它的Close()方法来关闭dataReader对象,才能用数据库连接进行其它操作。
dataReader.Close();

//创建连接对象
SqlConnection conn = *****;
string sql = "SELECT waitertype FROM tb_Waitertype"; // 查询员工类别的sql语句,也可以是增改删语句。
// 设置command命令执行的语句
SqlCommand command = new SqlCommand(sql, conn);
try
{
    conn.Open(); // 打开数据库连接
    SqlDataReader dataReader = command.ExecuteReader(); // 执行查询
    string waitertype = ""; // 类别名称
    // 循环读出所有的类别名,并添加到类别列表框中
    while (dataReader.Read())
    {
        waitertype = (string)dataReader["waiterType"];
        cboType.Items.Add(waitertype);
    }
    dataReader.Close();
}
catch (Exception ex)
{
    MessageBox.Show("操作数据库出错");
    Console.WriteLine(ex.Message);
}
finally
{
    conn.Close();
}

 

4.使用Listview控件绑定数据

列表视图控件的主要属性、事件和方法
属性                        说明
Columns                  “详细信息”视图中显示的列
FullRowSelect            当选中一项时,它的子项是否同该项一起突出显示
Items                    ListView中所有项的集合
MultiSelect              是否允许选择多项
SelectedItems            选中的项的集合
View                     指定以哪种视图显示

事件                        说明
MouseDoubleClick         鼠标双击事件

方法                        说明
Clear()                清除ListView中的所有项列

实际应用如下:

listview1.Items.Clear();//清空当前列表框
SqlConnection conn = **********;
conn.Open();///连接数据库
SqlCommand cmd = new SqlCommand("select * from tb_Room", conn);//数据库命令对象
sdr = cmd.ExecuteReader();//执行数据库命令,返回DataReader对象
while (sdr.Read())///将DataReader对象依次读取出来
{
    string zt = sdr["RoomZT"].ToString().Trim();
    
    AddItems(zt);//添加到列表框中的自定义函数
}
conn.Close();//关闭数据库连接

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#学习记录(47)MSSQL数据库 的相关文章

随机推荐

  • jdk17下载

    官网下载 https download oracle com java 17 latest jdk 17 windows x64 bin zip
  • 也想做一个绝地求生版的汽车控制移动,进来瞧瞧?(干货满满)

    控制车子移动 效果图附上 1 首先4个车轮复制一遍为车轮2备用 2 给车轮2全部添加wheel collider 只剩下车轮碰撞器和transform组件 3 给原版4个车轮添加脚本wheel 变量共有 面板赋值 依次添加车轮2里面的车轮c
  • c#图解教程和c#高级编程电子书链接

    链接 https pan baidu com s 1y TM08JvyBh8kQ0v7uT5hg 提取码 b0cq
  • Python的多维空数组赋值

    Python里面的list tuple默认都是一维的 创建二维数组或者多维数组也是比较简单 可以这样 list1 1 2 list1 append 3 4 可以这样 list2 1 2 3 4 还可以这样 list3 1 2 list3 i
  • android界面监控,防劫持

    1 首先要对自己应用的activity建立一个白名单 2 权限
  • http协议从客户端提交数据给服务器并返回数据

    老罗视频学习 本例从客户端提交数据给服务器 服务器接收到数据之后 看是否匹配 匹配返回字符串 login is success 失败返回 login is error 一 客户端 初始化url地址 private static String
  • Git如何比较不同分支的差异

    前两天 良许在做集成的时候碰到了一件闹心事 事情是这样的 良许的一位同事不小心把一个错误的 dev 分支 merge 到了 master 分支上 导致了良许编译不通过 于是 我们需要将版本回退到 merge 之前的状态 如果是下面这个状态
  • 电子设计竞赛(三)-SPWM与PID

    1 SPWM波调制技术 逆变电路的控制方式主要是采用SPWM 正弦脉宽调制技术 IR2104控制开关管的通断来实现正弦调制 SPWM的基本思路是将一个正弦波按等宽间距分成N等份 对于每一个波形以一个等面积的脉冲来对应 使脉冲的中点与相应正弦
  • python3 hashlib库sha256、pbkdf2_hmac、blake2b基本用法

    hashlib sha256 import hashlib x hashlib sha256 x update b asd print x 1 x hexdigest x hashlib sha256 x update asd encode
  • 数据下载网站整理

    数据十分重要 如何找到理想的数据显得更重要了 这里记录自己经过网上查询到的数据 进行整理 如果侵权 请联系我删除 再次感谢网友大佬们提供的资料 1 中国气象站点数据 下载地址 https www resdc cn data aspx DAT
  • 递归算法中的时间复杂度分析

    对于一种算法的时间复杂度分析还是特别重要的 在一些非递归算法中 我们仅仅看运算次数最多的那一行代码可能执行多少次就可以 实际就是看在循环中变量的变化 但是对于递归算法中该怎么分析呢 下面介绍几种递归函数中的算法时间复杂度分析的方法 0 递推
  • 使用paramiko跨服务器传输文件/文件夹

    一些概念 SSH Secure Shell 安全外壳协议 是建立在应用层基础上的安全协议 专为远程登录和其他网络服务提供安全性的协议 SFTP SSH 文件传输协议 Secret File Transfer Protocol SFTP 安全
  • window.location.href的用法

    window location href的用法 一 前言 二 常见用例 一 前言 window location href 是一个用于获取当前页面 URL 或让浏览器跳转到新 URL 的重要方法 是 window location 对象的属
  • 【gis系列】等高线创建dem,以及高程分析,坡度分析,坡向分析

    绝对原创 首先 我们要整理一份cad的文件格式 这里我不说那么多 就是在某某地图下载后 方法很多 可以通过qgis globalmapper来操作数据 以及一些普通的地图软件直接生成 这里呢 然后进入cad 把里面的高程标注信息给删除掉 图
  • 机器学习资源大全

    C 计算机视觉 CCV 基于C语言 提供缓存 核心的机器视觉库 新颖的机器视觉库 OpenCV 它提供C C Python Java 以及 MATLAB接口 并支持Windows Linux Android and Mac OS操作系统 通
  • SD卡初始化以及命令详解

    SD卡是嵌入式设备中很常用的一种存储设备 体积小 容量大 通讯简单 电路简单所以受到很多设备厂商的欢迎 主要用来记录设备运行过程中的各种信息 以及程序的各种配置信息 很是方便 有这样几点是需要知道的 SD 卡是基于 flash 的存储卡 S
  • Visual Studio 创建DLL 、LIB及调用

    一 前言 在工程中 经常会根据不同的场景需求将类封装成库文件 以供他人使用 那么如何利用VS进行库 动态库 的生成呢 以下简要演示实现过程 开发环境 VS2019 二 生成DLL动态库 1 创建控制台工程 添加类库函数 2 添加函数代码 d
  • vue打包及运行白屏,Android低版本适配

    版本支持 对于Android 4 X无法打开的问题 具体表现 1 运行后低版本谷歌浏览器打开后白屏 2 打包后低版本Android系统打不开 白屏 打包前npm run build后低版本浏览器打开白屏 如果低版本打开白屏那么打包后低版本A
  • CUDA系列三:矩阵相乘

    本博文主要讲解下基于cuda的矩阵相乘 cuda特别擅长的就是矩阵乘法 而且也比较容易实现 通过矩阵乘法的实现 可以比较容易理解cuda的核心思想 网上也有很多基于cuda实现的矩阵乘法 但是感觉都不完成 要不就是有错 本文给出的代码都是经
  • C#学习记录(47)MSSQL数据库

    引言 微软数据库是针对中小型企业的关系型数据库 操作简单易上手 首先介绍下C NET的数据库 以 ActiveX 数据对象 ADO 为基础 以 XML 扩展标记语言 为格式传送和接收数据 C NET应用程序 lt gt ADO NET lt