热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#学习笔记ADO.NET

ADO.NET是一项.NET数据库的技术,就像Java的JDBC一样。连接数据库字符串,可以在http:www.connectionstrings.co

ADO.NET是一项.NET数据库的技术,就像Java的JDBC一样。连接数据库字符串,可以在http://www.connectionstrings.com/ 这个网站上找到。不同的数据库需要不同的数据库提供程序,它们的名字都很类似。例如,Sql Server提供程序的Command类就叫做SqlCommand,MySQL提供程序的Command类就叫做MySQLCommand,它们都继承自DbCommand类。除了提供公共的功能之外,数据库提供程序还可能提供了自己数据库的特有功能。

SQL SERVER数据库

ADO.NET附带了SQL SERVER、ODBC和OLE DB的数据库提供程序。所以在使用SQL SERVER的时候不需要安装额外的数据库提供程序。在这里,我使用的是Sql Server 2014 Developer。

准备工作

首先需要确定自己的SQL SERVER实例的名字,名字可以在SQL SERVER管理工具中的数据库属性那里找到。对应的连接字符串如下:Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;
,将其修改为自己的实例:Server=LEO-PC\SQLEXPRESS;Database=test;User Id=sa;Password=123456;。SQL SERVER还支持另外一种登录方式——利用Windows凭据登录。如果要使用这种登录方式,去掉连接字符串中的用户名和密码部分,然后添加一个Integrated Security=SSPI;。连接字符串可以在VS的数据库窗口的属性上查看。

为了测试,我们首先先建立一个自己的数据库,名字叫test,利用管理工具提供的图形化界面很容易做到。然后再新建一张表:

CREATE TABLE STUDENT(
SNO CHAR(10),
SNAME VARCHAR(20),
AGE SMALLINT,
CONSTRAINT STUDENT_PK PRIMARY KEY(SNO)
);

然后在插入几条数据:

INSERT INTO STUDENT(SNO, SNAME, AGE)
VALUES ('12345', '易天', 22);

INSERT INTO STUDENT(SNO, SNAME, AGE)
VALUES ('12346', '张三', 21);

INSERT INTO STUDENT(SNO, SNAME, AGE)
VALUES ('12347', '赵四', 23);

这样,数据库的准备工作就完成了。

连接数据库


直接使用连接字符串

有了连接字符串,就可以连接数据库了。连接数据库使用DbConnection对象。直接用连接字符串创建一个SQLConnection对象即可,如果没有异常发生,就说明连接成功。

const string connectionString = @"Server=LEO-PC\SQLEXPRESS;Database=test;User Id=sa;Password=123456;";
SqlConnection sqlserver = new SqlConnection(connectionString);

用配置文件管理连接字符串

如果可能使用多个数据库,使用配置文件来管理连接字符串会更好一点。
在项目的App.config文件中找到configuration节点,在其中添加一个子结点connectionStrings,然后添加如下内容,就可以将连接字符串保存在配置文件中了。

<connectionStrings><add name&#61;"Sql Server Instance" providerName&#61;"System.Data.SqlClient"connectionString&#61;"Server&#61;LEO-PC\SQLEXPRESS;Database&#61;test;User Id&#61;sa;Password&#61;123456;"/>connectionStrings>

执行SQL命令


定义命令

执行命令需要使用DbCommand对象。首先先要定义命令。这里将SqlConnection放入using语句中&#xff0c;确保即使出现异常&#xff0c;数据库连接也可以关闭&#xff0c;并及时释放资源。

using (SqlConnection sqlserver &#61; new SqlConnection(connectionString)){sqlserver.Open();string command &#61; "select *from student";SqlCommand cmd &#61; new SqlCommand(command, sqlserver);sqlserver.Close();}

执行命令

Command对象提供了三个方法用于执行不同的命令。

  • ExecuteNonQuery方法用于执行非查询的操作&#xff0c;例如INSERT、DELETE、UPDATE等语句或者存储过程&#xff0c;会返回受影响的行数。
  • ExecuteReader方法执行查询语句或者存储过程&#xff0c;并返回一个IDataReader类型的结果集。
  • ExecuteScalar方法执行命令并返回结果集中的第一行第一列的值。

对于SQLCommand&#xff0c;还提供了一个额外的方法ExecuteXmlReader&#xff0c;它返回一个XMLReader&#xff0c;可以将SQL数据库的内容转化成Xml格式。

internal static void SqlServerTest()
{const string connectionString &#61; &#64;"Server&#61;LEO-PC\SQLEXPRESS;Database&#61;test;User Id&#61;sa;Password&#61;123456;";try{using (SqlConnection sqlserver &#61; new SqlConnection(connectionString)){sqlserver.Open();//执行查询语句string command &#61; "select *from student";SqlCommand cmd &#61; new SqlCommand(command, sqlserver);SqlDataReader reader &#61; cmd.ExecuteReader();while (reader.Read()){Console.WriteLine($"SNO:{reader[0]} SNAME:{reader[1]} AGE:{reader[2]}");}reader.Close();//执行插入语句command &#61; "insert into student(sno,sname,age) values(&#39;13245&#39;,&#39;王五&#39;,32)";cmd &#61; new SqlCommand(command, sqlserver);int rows &#61; cmd.ExecuteNonQuery();Console.WriteLine($"受影响了{rows}行");sqlserver.Close();//执行ExecuteScalarcommand &#61; "select count(*) from student";cmd &#61; new SqlCommand(command, sqlserver);int count &#61; (int)cmd.ExecuteScalar();Console.WriteLine($"总共有{count}条记录");}}catch (SqlException){throw;}
}

MySQL数据库

下载数据提供程序

先查看一下是否安装了NuGet程序包管理器&#xff0c;如果没有安装的话&#xff0c;打开工具->扩展和更新&#xff0c;然后查找并安装NuGet包管理器。安装之后打开NuGet包管理器&#xff0c;查找并安装MySQL.Data包。安装成功之后就可以使用MySQL的数据提供程序来连接MySQL数据库了。当然这需要本机安装MySQL数据库或者有一个远程的数据库访问地址。

连接MySQL

MySQL的连接字符串是 Server&#61;myServerAddress;Port&#61;1234;Database&#61;myDataBase;Uid&#61;myUsername;
Pwd&#61;myPassword;
&#xff0c;将其修改为自己的地址&#xff0c;例如我的就是这样的&#xff1a;Server&#61;localhost;Port&#61;3306;Database&#61;test;Uid&#61;root;Pwd&#61;123456;

打开MySQL数据库&#xff0c;新建一个test数据库&#xff0c;数据表和数据仍然使用上面的student数据表。由于只使用了最简单的数据库语句&#xff0c;因此在这些数据库中基本是通用的。

执行命令

执行命令基本和SQL SERVER差不多&#xff0c;只是相关类是以MySql开头的。

const string connectionString &#61; &#64;"Server&#61;localhost;Port&#61;3306;Database&#61;test;Uid&#61;root;Pwd&#61;123456;";
try
{using (MySqlConnection mysql &#61; new MySqlConnection(connectionString)){mysql.Open();//执行查询命令MySqlCommand command &#61; new MySqlCommand("select *from student", mysql);MySqlDataReader reader &#61; command.ExecuteReader();while (reader.Read()){Console.WriteLine($"SNO:{reader[0]} SNAME:{reader[1]} AGE:{reader[2]}");}reader.Close();//执行ExecuteScalar方法command &#61; new MySqlCommand("select count(*) from student", mysql);int count &#61; Convert.ToInt32(command.ExecuteScalar());Console.WriteLine($"总共有{count}条记录");}
}
catch (MySqlException)
{throw;
}

PostgreSQL

PostgreSQL的数据提供程序叫做pgsql&#xff0c;直接在NuGet中搜索安装即可。程序表的建立和上面的类似。因为没有使用复杂的特性&#xff0c;所以锁码和前面的类似。

const string connectionString &#61; &#64;"Server&#61;127.0.0.1;Port&#61;5432;Database&#61;test;User Id&#61;postgres;Password&#61;123456;";
try
{using (NpgsqlConnection npgsql &#61; new NpgsqlConnection(connectionString)){npgsql.Open();//执行查询命令NpgsqlCommand command &#61; new NpgsqlCommand("select *from student", npgsql);NpgsqlDataReader reader &#61; command.ExecuteReader();while (reader.Read()){Console.WriteLine($"SNO:{reader[0]} SNAME:{reader[1]} AGE:{reader[2]}");}reader.Close();//执行ExecuteScalar方法command &#61; new NpgsqlCommand("select count(*) from student", npgsql);int count &#61; Convert.ToInt32(command.ExecuteScalar());Console.WriteLine($"总共有{count}条记录");}
}
catch (NpgsqlException)
{throw;
}


推荐阅读
  • .NET中各种数据库连接大全(转)[more].NET中各种数据库连接大全sql.gif)SQLSERVEROdbCStandardSecurity:driver{SQLSe ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • mysql主机地址是什么????下面的该怎么添??mysql主机地址是什么????下面的该怎么添??答:SQLyogEnterprise中,mysql的主机地址如果你是本机,就填写 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • MySQL笔记_MySQL笔记1|数据库17问17答
    本文由编程笔记#小编为大家整理,主要介绍了MySQL笔记1|数据库17问17答相关的知识,希望对你有一定的参考价值。 ... [详细]
  • jsp数据库多行返回(excel返回多行数据)
    本文目录一览:1、数据库数据怎么返回到jsp页面上 ... [详细]
  • phpgettext.dll的简单介绍
    本文目录一览:1、在php.ini中设置了extension=php_gettext.dl ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 达人评测 酷睿i5 12450h和锐龙r7 5800h选哪个好 i512450h和r75800h对比
    本文介绍了达人评测酷睿i5 12450h和锐龙r7 5800h选哪个好的相关知识,包括两者的基本配置和重要考虑点。希望对你在选择时提供一定的参考价值。 ... [详细]
author-avatar
姚允浩_266
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有