【数据库】C#创建项目简单开发实现数据库表记录迁移功能

简介: 在实际项目中,很大可能会遇到数据迁移的情况特别是对于系统升级或者旧表转移到新表,新旧表很可能是字段都不一样的情况,本篇文章就是在两个不同数据库不同表之间数据整合同时也回顾下ADO.NET的ORM框架基础知识
作者:小5聊基础
简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑
编程原则:Write Less Do More
  • 主要知识点列表
编号 语言或插件 知识点 说明
1 C# Task 任务对象,异常线程操作
2 C# using(){} 执行完花括号内的代码后,实放对象
3 C# SqlConnection 连接数据库类
4 C# ConnectionState 连接状态类
5 C# SqlCommand sql命令操作类
6 C# CommandType 命令操作类型类
7 C# SqlParameter 参数化类
8 C# SqlDataAdapter 数据适配器类

【窗体界面简单设计】

1、原始库连接字符串 - 文本框控件

2、目标库连接字符串 - 文本框控件

3、若干个标签文本

4、数据迁移 - 按钮控件

5、数据迁移过程信息输出富文本框

image.png

【开始按钮】

1、在线程内操作控件,需要在线程外设置属性
CheckForIllegalCrossThreadCalls=false;
如果不设置,那么会出现如下错误提示

image.png

2、using(){}<br/>
此语句,能够在括号内定义对象,以及在花括号内执行完代码后能够实放对象,因此using 语句中使用的对象必须实现 IDisposable 接口

3、连接数据库对象类 - SqlConnection<br/>
在.net framework框架下,属于System.Data.dll封装好的类,一般在实例化时即可传连接字符串给构造函数,一般还有一个连接状态使用的比较多,默认实例化时后也是处于关闭状态,用来判断减少重复连接。默认是操作时开操作完自动关闭,即时没有用using的情况下也是一样

image.png

using (SqlConnection conn=new SqlConnection(conn_str))
{

}

4、sql命令操作类 - SqlCommand <br/>

会用到的三个主要成员

1)数据库连接对象类,上一步实例化的值赋值给它

2)操作的sql语句文本,或者存储过程名称

3)操作类型

用的比较多的还是Text和StoreProcedure

1655540520011.jpg

5、参数类 - SqlParameter

为什么需要这个参数化类,主要是为了防止sql注入,通过经过处理,这里暂不使用,后续会单独在一篇文章里讲。一般分为输出和输入参数

6、数据适配器类 - SqlDataAdapter

主要用于查询操作

相当于运输车,运输目标数据,有个Fill填充数据的操作,定义一个DataTable,相当先定义一个大的集装箱,最后将数据装进集装箱里,然后运输到目标对象里

image.png

private DataTable GetTable(string conn_str, string sql_text)
{
    DataTable dt = new DataTable();

    using (SqlConnection conn = new SqlConnection(conn_str))
    {
        if (conn.State != ConnectionState.Open) conn.Open();

        SqlCommand command = new SqlCommand();

        command.Connection = conn;
        command.CommandText = sql_text;
        command.CommandType = CommandType.Text;

        using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(command))
        {
            sqlDataAdapter.Fill(dt);
        }
    }

    return dt;
}

7、增删改操作 - ExecuteNonQuery
命令操作类下的方法

private int AddData(string conn_str, string sql_text)
{
    int rows = 0;

    using (SqlConnection conn = new SqlConnection(conn_str))
    {
        if (conn.State != ConnectionState.Open) conn.Open();

        SqlCommand command = new SqlCommand();

        command.Connection = conn;
        command.CommandText = sql_text;
        command.CommandType = CommandType.Text;

        command.ExecuteNonQuery();
    }

    return rows;
}
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
阿里云RDS云数据库全解析:产品功能、收费标准与活动参考
与云服务器ECS一样,关系型数据库RDS也是很多用户上云必买的热门云产品之一,阿里云的云数据库RDS主要包含RDS MySQL、RDS SQL Server、RDS PostgreSQL、RDS MariaDB等几个关系型数据库,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,帮助您解决数据库运维的烦恼。本文为大家介绍阿里云的云数据库 RDS主要产品及计费方式、收费标准以及活动等相关情况,以供参考。
|
3月前
|
XML 测试技术 API
利用C#开发ONVIF客户端和集成RTSP播放功能
利用C#开发ONVIF客户端和集成RTSP播放功能
1497 123
|
5月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
3月前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
184 1
|
5月前
|
SQL 存储 关系型数据库
MySQL功能模块探秘:数据库世界的奇妙之旅
]带你轻松愉快地探索MySQL 8.4.5的核心功能模块,从SQL引擎到存储引擎,从复制机制到插件系统,让你在欢声笑语中掌握数据库的精髓!
193 26
|
5月前
|
存储 SQL 前端开发
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
本节以“账本”为例,使用关系型数据库接口实现账单的增、删、改、查操作。通过创建ArkTSRdb应用,演示如何操作RdbStore进行数据管理,并结合界面按钮实现交互功能。
239 0
跟老卫学HarmonyOS开发:ArkTS关系型数据库开发
|
7月前
|
存储 缓存 自然语言处理
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
205 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
|
8月前
|
SQL 数据可视化 IDE
开发数据库不想写命令?YashanDB Developer Center 帮你轻松搞定
YashanDB Developer Center(YDC)是一款可视化的数据库开发工具,专为提升数据库开发效率而设计。它通过图形化对象管理让数据库对象清晰可见,提供智能SQL编辑器支持语法高亮与自动补全,实现PL调试的图形化操作,帮助快速定位问题。此外,操作记录可追溯,多端灵活部署,适配多种场景。无论是中大型企业研发团队,还是不熟悉命令行的业务开发者,YDC都能显著优化开发体验,堪称YashanDB的“可视化IDE”。
|
3月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
222 19