ADO.net学习

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:

<1>在VS2017中建立Windows 窗体应用(.NET Framework)项目。


<2>在解决方案资源管理器中,打开Form1.cs,主题窗口会出现Form1.cs[设计]的标题。


<3>打开工具栏,找到Button控件,将该控件拖拽到设计面板中,右键这个控件,点击属性,在Text栏目中输入该按钮的名称。在"设计"的(Name)栏目中输入该按钮的响应函数的名字。我设计的是:btnCreateConnection。软后双击这个按钮,就会转向Form.cs中的btnCreateConnection_Click。也就是该按钮的点击的响应函数。设置这个函数的目的是第一次连接数据库。


<4>[注:本文连接的是SQLserver数据库]。


<5>增加命名空间:

 

System.Data.SqlClient 命名空间是用于 SQL Server 的 .NET 数据提供程序

System.Data.Common 用于使用DbConnection,DbCommand,DbDataReader类等。

System.Configuration 命名空间包含提供用于处理配置数据的编程模型的类。



数据库文件:链接:https://pan.baidu.com/s/1GT-eyEtK9K06TYYUrLPrdg 密码:8jjw

下载后所包含的数据库文件有:

 BulkCopy.mdf,

 BulkCopy_log.ldf; 

 PUBS.MDF,

 PUBS_LOG.LDF;


我将这些数据库文件附加到了SQL Server2014的数据库管理系统中,这样的话接下来写的程序对数据库的更改变化就可以通过Navicat直观地查看内容的变化。


<6>在btnCreateConnection_Click响应函数中连接数据库,这里遇到了分支。第一种情况是数据库文件在解决方案资源管理器中,第二种情况是数据库附加到数据库管理系统或者该数据库由数据库管理系统创建。


第一种情况:数据库文件在解决方案管理器中。

A,当直接在响应函数中写连接数据库的语句时:

DbConnection con = new SqlConnection();
con.ConnectionString =
             @"Data Source=.\SQLEXPRESS;"
            + "AttachDbFilename=|DataDirectory|PUBS.MDF;"
            + "Integrated Security=True;User Instance=True";
con.Open();
//Do lots of cool work here
con.Close();


B,当用配置文件里面封装的内容连接数据库时,语句为:


配置文件(也就是App.config)里面封装的内容需要添加:

 <connectionStrings>
      <add name="PubsData" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|PUBS.MDF;Integrated Security=True;User Instance=True;"
         providerName="System.Data.SqlClient" />
      <add name="PubsDataMars" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\PUBS.MDF;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True;"
         providerName="System.Data.SqlClient" />
      <add name="BulkCopy"
         connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BulkCopy.mdf;Integrated Security=True;User Instance=True;"
         providerName="System.Data.SqlClient" />
 </connectionStrings>

(在<configuration></configuration>也就是XML的根元素中添加内容)


在响应函数中写的语句为:

ConnectionStringSettings pubs = ConfigurationManager.ConnectionStrings["PubsData"];
DbConnection con = new SqlConnection(pubs.ConnectionString);

con.Open();
//Do lots of cool work here
con.Close();


为了验证连接数据库成功,可以通过在//Do lots of cool work here中查询数据库中表的内容验证:


 DbCommand cmd = con.CreateCommand();
 cmd.CommandText = "select * from sales";
 con.Open();
 DbDataReader dr = cmd.ExecuteReader();
 if (dr.HasRows) {
       while (dr.Read()) {
                    string stor_id = dr["stor_id"].ToString();
                    string ord_num = dr["ord_num"].ToString();
                    string ord_date = dr["ord_date"].ToString();
                    string title_id = dr["title_id"].ToString();
                    Console.WriteLine(stor_id+" "+ord_num+" "+ord_date+" "+title_id);
            }
 }
这里就可以体现了将数据库文件附加到数据库管理系统之后通过Navicate查看表的优势。表中的各个关键字都可以查看,以便写出while(dr.Read())中的语句。


第二种情况:数据库附加到数据库管理系统或者该数据库由数据库管理系统创建。

A,当直接在响应函数中写连接数据库的语句时:

DbConnection con = new SqlConnection();
con.ConnectionString = @"Initial Catalog=PUBS;Persist Security Info=True;User ID=sa;password=hl123456789";
con.Open();

//Do lots of cool work here
con.Close();

尤其要根据自己的数据库管理系统设置相应的User ID跟password。


B,当用配置文件里面封装的内容连接数据库时,语句为:

配置文件里的语句为:

<connectionStrings>
      <add name="dbstconnectionstring"
           connectionString="Initial Catalog=PUBS;Persist Security Info=True;User ID=sa;password=hl123456789"
           providerName="System.Data.SqlClient"/>
 </connectionStrings>

响应函数中的语句为:

 
string connectionString = ConfigurationManager.ConnectionStrings["dbstconnectionstring"].ConnectionString;
DbConnection conn = new SqlConnection(connectionString);
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from authors";
conn.Open();
//Do a lot of work
conn.Close();

[注:]第<6>个内容中,如果想通过响应函数来查看配置文件的具体内容时候,语句可以写成:(这里接的是第<6>个内容的第一种情况的B类)

 
ConnectionStringSettings pubs = ConfigurationManager.ConnectionStrings["PubsData"];
DbConnection connection = new SqlConnection(pubs.ConnectionString);
//name = "PubsData"
string name = pubs.Name;
//provider = "System.Data.SqlClient"
string provider = pubs.ProviderName;
//cnString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\PUBS.MDF;Integrated Security=True;User Instance=True"
string cnString = pubs.ConnectionString;
MessageBox.Show("From App.Config: " + cnString+"\n"+name+"\n"+provider);

<7>使用DataGridView控件,和按钮的响应事件,来显示 SqlConnection的数据源的架构信息

其中:

SQL Server架构集合

GetSchema():返回此 SqlConnection 的数据源的架构信息

GetSchema(String):使用表示架构名称的指定字符串返回此 SqlConnection 的数据源的架构信息


我设计了两个DataGridView控件,分别为dataGridView1,dataGridView2,第一个用于GetSchema(),第二个用于GetSchema(String),其中dataGridView2用于点击dataGridView1中的行的内容,显示具体的内容。


准备:

按钮,响应函数为:btnGetSchema_Click

自己写一个dataGridView事件变化函数ataGridView_SelectionChange

并在dataGridView1属性(闪电栏目)中的SelectionChange响应事件中添加写的这个函数。


源程序为:


 private void btnGetSchema_Click(object sender, EventArgs e)
      {
         //Get the settings from the configuration file
         ConnectionStringSettings pubs = ConfigurationManager.ConnectionStrings["PubsData"];
         DbConnection connection = new SqlConnection(pubs.ConnectionString);
         connection.Open();
         DataTable schema = connection.GetSchema();
         connection.Close();
         dataGridView1.DataSource = schema;
      }


      private void dataGridView1_SelectionChanged(object sender, EventArgs e)
      {
         DataTable schema = (DataTable)dataGridView1.DataSource;
         DataRow currentRow = schema.Rows[dataGridView1.CurrentCell.RowIndex];
         string collection = (string)currentRow["CollectionName"];
         //Get the settings from the configuration file
         ConnectionStringSettings pubs = ConfigurationManager.ConnectionStrings["PubsData"];
         DbConnection connection = new SqlConnection(pubs.ConnectionString);
         connection.Open();
         DataTable schema2 = connection.GetSchema(collection);
         connection.Close();
         dataGridView2.DataSource = schema2;
      }








相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
安全 Shell 数据库
「学习记录」.NET程序的数据库密码解密
「学习记录」.NET程序的数据库密码解密
|
API C# 图形学
DotNetGuide新增C#/.NET/.NET Core充电站(让你学习不迷路)
DotNetGuide新增C#/.NET/.NET Core充电站(让你学习不迷路)
|
7天前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
6月前
|
开发框架 .NET 中间件
C#/.NET快速上手学习资料集(让现在的自己不再迷茫)
C#/.NET快速上手学习资料集(让现在的自己不再迷茫)
188 8
|
1月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
这篇文章是关于计算机组成原理的王道考研学习笔记,主要介绍了半导体存储器RAM和ROM的相关知识。
学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【文献学习】Phase-Aware Speech Enhancement with Deep Complex U-Net
文章介绍了Deep Complex U-Net模型,用于复数值的语音增强,提出了新的极坐标掩码方法和wSDR损失函数,并通过多种评估指标验证了其性能。
56 1
|
3月前
|
开发框架 .NET API
C#/.NET/.NET Core推荐学习书籍(24年8月更新)
C#/.NET/.NET Core推荐学习书籍(24年8月更新)
|
5月前
|
开发框架 JSON .NET
学习ASP.NET 中的 默认应用程序配置源
默认主机配置源 使用命令行配置提供程序的命令行参数
39 2
|
5月前
|
前端开发 Java C#
GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库
GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库