C# 数据库访问方法

news2024/12/25 23:44:17

一 访问数据的两种基本方式

1 方式1:DataAdapter及DataSet

① 适合于“离线”处理;
② 自动建立Command对象;

方式2:DataReader

① 适合于只读数据,效率较高

它们都要使用Connection及Command

二 Connection对象

1 对于不同Data Provider有不同Connection对象

2 System.Data.SqlClient

3 SqlConnection

Open()方法-SQL Provider使用它来与SQL Server 数据库进行连接;
ConnectionString属性------指定连接字符串参数;

三 SQL Server导入的命名空间

1 语法如下

using System.Data;
using System.Data.SqlClient;

2 连接SQL Server 的连接串的书写格式

string connString="server=localhost;database=pubs;uid=sa;pwd=aaa";
SqlConnection Conn=new SqlConnection(connString);

2 连接字符串

1) 连接SQLServer数据库,使用SqlServer Provider

data source=MyServer;initial catalog=MyDataBase;
user id=MyUser;password=MyPassword;

2) 连接早期的Access数据库mdb文件或Excel文件,使用Microsoft.Jet.OLEDB.4.0

Provider=Microsoft.Jet.OlEDB.4.0;
Password="xxx";
User ID=Admin;
Data Source=D:\CsExample\\ch10\BLBLIO.MDB;

3) 连接新版的Access数据库accdb文件或Excel文件,使用Microsoft.ACE.OLEDB.12.0

Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=c:\myFile.xlxs;
Excel 12.0 Xml;
HDR=YESl;

4) 连接Oracle数据库,使用Oracle Provider

Provider=MSDAORA;
DataSource=oracle_db;
User ID=scott;
Password=tiger;

5) 连接Mysql数据库,使用MySqul.Data.dll

Data Source='localhost';
Database='wp';
User Id='root';
Password='root';
charset='utf8';
pooling=true;

三 使用Command对象

1 建立数据连接以后,可以利用Command对象来执行命令并从数据源返回结果。

① ExecuteReader()
得到Reader对象,单向只读。
② ExecuteScalar()
得到单一的量,如sum,avg等的结果;
③ ExecuteNonQuery()
执行非查询性的命令(如Update/Delete/Insert)
返回的是它所影响的记录数;

2 使用参数

cmd.CommandText="INSERT INTO Nations(CName,EName,FName)VALUES
(@CName,@EName,@FName)";
cmd.Connection=this.sqlConnection1;
cmd.Parameters.Add("@CName",SqlDbType.VarChar,60).Value="aaaaa";

使用参数比直接用字符串相加更安全,更清晰

cmd.CommandText="Insert into Nataions(CName)Values(' "+name+"')";

3 Command和DataReader

1) 使用Command来获取DataReader

2) 使用Command来获取一个数据;

3) 直接使用数据库命令;

四 DataReader对象

1 ADO.NET 中最高效的得到数据的方法

2 SqlDataReader

① SqlCommand.ExecuteReader()方法;
② SqlDataReader.Read()方法可以遍历结果集中的行;
③ SqlDataReader按照当前行的列引索可得到每一列的数据,GetString(),GetBoolean(),GetInt16(),GetInt32(),GetDateTime(),GetDecimal(),GetDouble(),GetFloat(),GetGuid();

五 DataAdapter和DataSet

① 使用DataAdapter来填充DataSet;
② 取得DataSet中的数据;
③ 修改DataSet中的数据;
④ 添加和删除行;
⑤ 在DataTable中查找数据;
⑥ 接受和拒绝更改;
⑦ 保存对DataSet的改变返回数据库;

可以自动产生Command

OleDbCommandBuilder cmdbld=new
OleDbCommandBuilder(daAdapter);

六 DatSet及相关对象

DataSet;
DataTable;
DataRow;
DataColumn;
表之间的联系Relation;
约束;

1 DataSet对象模型

在这里插入图片描述

2 ADO.NET和XML

1) DataSet可以直接串列话为XML,同时XML也可以直接的反串列化为DataSet对象

① ReadXml()方法;
② WriteXml()方法;

2) SqlCommand.ExecuteXmlReader()返回一个XmlReader对象

七 数据库的应用

1 建立自己的使用库

① AccessDB.cs;
② SqlServerDB.cs;

2 主要有两个方法

① GetDataSet(sql);
② ExecuteNonquery(sql);

3 界面及数据绑定

使用DataGridView
其。DataSource=myDataTable;

4 应用示例

CrudDemo.rar
CRUD(Create,Retrieve,Update,Delete)
增删改查

界面与数据库的关系
界面-sql语句-数据库

5 应用示例:酒店管理系统

1) 分层架构

UI:用户界面层(user graphical interface)
BLL:业务逻辑层(business logic layer)
DAL:数据库访问层(data access layer)
Model:数据库模型

2) ORMapping(Object-Relation Mapping)

对象-关系(数据库表)映射
Sqlite版的背单词程序.rar: https://url09.ctfile.com/f/22158009-755549304-93d211?p=5939 (访问密码: 5939)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android解析服务器响应数据

文章目录Android解析服务器响应数据解析XML格式数据Pull解析方式SAX解析方式解析JSON数据使用JSONObject使用GSON的方式来解析JSON数据Android解析服务器响应数据 解析XML格式数据 通常情况下,每一个需要访问网络的应用程序都会有一个自己的服务器,我们可以向服务器提交自己的…

多线程——概念及线程安全

文章目录多线程概念进程vs线程多线程的优势/好处/使用场景线程的状态创建线程的方式线程的启动Thread中,start()和run()有什么区别?Thread类中的常用方法join()获取当前线程引用线程休眠线程中断线程的属性多线程效率局部变量在多线程中的使用线程安全问题1.什么情况会产生线程…

replit搭建

本文章用于快速搭建“出去”的节点,很简单 每个月只有100G流量中间可能会停止运行,需要手动进入项目开启 1、需要注册一个Replit账号 点击注册 支持Github登录,其他登录也行 2、使用这个模板项目 随便起个名字 3、运行 进行完第二步&am…

【开源项目】第三方登录框架JustAuth入门使用和源码分析

第三方登录框架JustAuth入门使用和源码分析 项目介绍 JustAuth,如你所见,它仅仅是一个第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录 SDK,让登录变得So easy! JustAuth 集成了诸如:Github、Gitee、支付…

九、kubernetes中Namespace详解、实例

1、概述 Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访…

花费数小时,带你学透Java数组,这些常用方法你还记得吗?

推荐学习专栏:Java 编程进阶之路【从入门到精通】 文章目录1. 数组2. 一维数组2.1 声明2.2 初始化2.3 使用3. 二维数组3.1 声明3.2 初始化3.3 使用4. 数组在内存中的分布5. 数组常用的方法5.1 Arrays.toString方法5.2 Arrays.copyOf方法5.3 Arrays.copyOfRange方法5…

麦克斯韦(Maxwell)方程组的由来

美国著名物理学家理查德费曼(Richard Feynman)曾预言:“人类历史从长远看,好比说到一万年以后看回来,19世纪最举足轻重的毫无疑问就是麦克斯韦发现了电动力学定律。” 这个预言或许对吧。可是费曼也知道,麦…

疫情三年划上终止符,好易点却把个人健康写入了产品基因

作者 | 牧之 编辑 | 小沐 出品 | 智哪儿 zhinaer.cn随着12月26日国家卫健委发布的一纸公告,新冠肺炎正式更名为新冠感染。而从次年1月8日起,新冠将被实施「乙类乙管」。同时出入境也将采取开放性政策。这意味着,持续三年的「疫情时期」&#…

大数据技术——HBase简介

文章目录1. HBase定义2. HBase数据模型2.1 逻辑存储结构2.2 HBase 物理存储结构3. HBase基础架构1. HBase定义 HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存…

基于BP神经网络的电力负荷预测(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…

SpringBoot系列之数据库初始化-jpa配置方式

【DB系列】数据库初始化-jpa配置方式 | 一灰灰Blog 上一篇博文介绍如何使用spring.datasource来实现项目启动之后的数据库初始化,本文作为数据库初始化的第二篇,将主要介绍一下,如何使用spring.jpa的配置方式来实现相同的效果 I. 项目搭建 1…

qt windeployqt打包 带多个dll的可执行程序时 应用程序无法正常启动

前提: 我的工程中包含5个子项目,项目1生成 camer.exe 项目2生成 dll1.dll ,其中项目1 依赖后面的四个子项目。 但我在打包程序时,只运行了windeployqt F:\workspace\\bin-ne\camer.exe 将打包的程序放在纯净版本上时&#xff0…

Django开发

1.创建项目 创建项目: 删除内容: 2.创建APP 创建APP 注册APP: 3.设计表结构 4.在SQL中生成表 工具连接MySQL生成数据库(在cmd中执行): create database Day1 DEFAULT CHARSET utf8 COLLATE utf8_…

融云获 51CTO 年终评选「中国 IT 行业政企数智办公优秀解决方案奖」

今日,51CTO 主办的“2022 年第十七届中国企业年终评选”榜单新鲜出炉,融云凭借百幄数智办公平台在政企信创办公领域的创新方案和独特设计,斩获“2022 年度中国 IT 行业政企数智办公优秀解决方案奖”。关注【融云 RongCloud】,了解…

B站年度产品榜 | 10项行业品类全面透析Z世代消费偏好

12月19日,哔哩哔哩官方发布“2022年 BILIBILI Z100”,这是B站官方推出的「UP主在用」年度产品榜,榜单包含10项产品类目87件产品,囊括美妆个护、数码3C、食品饮料、家居家电、交通出行、办公用品、鞋服箱包饰品、宠物用品、运动健康…

Linux线程控制

写在前面 我们今天来看线程的知识点,这个博客的内容很多,主要就是为了我们后面的网络做铺垫,最关键的是相比较于进程而言,线程是更加优秀的,我们现在的计算机大多采用的就是线程. 线程 我之前谈过在创建子进程的时候…

操作系统期末考试必会题库4——设备管理

1、DMA方式和中断控制方式的主要区别是什么? 2、面向块设备和面向流设备有何区别?各举一些例子 面向块的设备将信息保存在块中,块的大小通常是固定的,传送过程中一次传送一块。通常可以通过块号访问数据。磁盘和USB智能卡都是面向…

【Linux】Linux权限(一)文件权限和目录权限

Linux权限1.Linux权限的概念2.Linux的用户分类3.Linux的文件类型3.1如何看待Linux下的文件后缀4.Linux的文件权限5.Linux下切换用户指令6.Linux文件访问者的分类(拥有者、所属组、other)6.1root 和普通用户 与 拥有者和所属组和其他人的关系6.2 如何描述…

matlab中ginput函数的用法

仅用来记录自己学习中不会的函数 ginput函数:来自鼠标或光标的图形输入 一、语法 [x,y] ginput(n) [x,y] ginput [x,y,button] ginput(…) 二、说明 ginput 提高当前坐标区中的交叉线以供您标识图窗中的点,从而使用鼠标定位光标。图窗必须具有焦点…

【Linux】 第八部分 Linux常用基本命令

【Linux】 第八部分 Linux常用基本命令 文章目录【Linux】 第八部分 Linux常用基本命令8. Linux常用基本命令8.1 帮助命令8.2 文件目录类命令pwd 显示当前工作目录的绝对路径cd 切换目录ls 列出目录的内容mkdir 创建目录rmdir 删除目录touch 创建文件cp 复制文件或者目录rm 删除…