热门标签 | 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;
}


推荐阅读
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • 本文探讨了如何在C#应用程序中通过选择ComboBox项从MySQL数据库中检索数据值。具体介绍了在事件处理方法 `comboBox2_SelectedIndexChanged` 中可能出现的常见错误,并提供了详细的解决方案和优化建议,以确保数据能够正确且高效地从数据库中读取并显示在界面上。此外,还讨论了连接字符串的配置、SQL查询语句的编写以及异常处理的最佳实践,帮助开发者避免常见的陷阱并提高代码的健壮性。 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 在 Android 开发中,`android:exported` 属性用于控制组件(如 Activity、Service、BroadcastReceiver 和 ContentProvider)是否可以被其他应用组件访问或与其交互。若将此属性设为 `true`,则允许外部应用调用或与之交互;反之,若设为 `false`,则仅限于同一应用内的组件进行访问。这一属性对于确保应用的安全性和隐私保护至关重要。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 基于试题数据的智能化管理平台采用Java语言进行面向对象编程,旨在构建一个高效的试题信息管理系统。该系统在JDK 6.0和MyEclipse 10.6环境下开发,通过优化试题数据管理和处理流程,提升系统的稳定性和用户体验。平台支持多用户操作,具备强大的数据处理能力和灵活的扩展性,适用于各类教育机构和考试组织。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
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社区 版权所有