【数据库】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;
}
相关文章
|
6天前
|
前端开发 JavaScript 安全
C#一分钟浅谈:Blazor WebAssembly 开发
Blazor WebAssembly 是一个客户端框架,允许开发者使用C#和Razor语法构建Web应用。本文介绍了Blazor WebAssembly的基本概念、常见问题及解决方案,包括路由配置、数据绑定、异步操作、状态管理和性能优化等方面的内容,并分享了一些易错点及如何避免的方法。希望这些内容能帮助你在Blazor WebAssembly开发中少走弯路,提高开发效率。
73 51
|
6天前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
3天前
|
开发框架 C# iOS开发
基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform
基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform
|
3天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
4天前
|
开发框架 缓存 .NET
C# 一分钟浅谈:Blazor Server 端开发
Blazor Server 是基于 ASP.NET Core 的框架,允许使用 C# 和 Razor 语法构建交互式 Web 应用。本文介绍 Blazor Server 的基本概念、快速入门、常见问题及解决方案,帮助开发者快速上手。涵盖创建应用、基本组件、数据绑定、状态管理、跨组件通信、错误处理和性能优化等内容。
12 1
|
4天前
|
缓存 C# 开发者
C# 一分钟浅谈:Blazor Server 端开发
本文介绍了 Blazor Server,一种基于 .NET 的 Web 开发模型,允许使用 C# 和 Razor 语法构建交互式 Web 应用。文章从基础概念、创建应用、常见问题及解决方案、易错点及避免方法等方面详细讲解,帮助开发者快速上手并提高开发效率。
20 2
|
7天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
23 4
|
14天前
|
测试技术 Go C#
C#一分钟浅谈:ReSharper 插件增强开发效率
【10月更文挑战第25天】ReSharper 是 JetBrains 开发的一款 Visual Studio 插件,旨在提高 .NET 开发者的生产力。它通过代码分析、重构、导航等功能,帮助开发者避免常见错误,提升代码质量和开发效率。本文将通过具体代码案例,详细介绍 ReSharper 的常见功能及其应用。
32 1
|
16天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
33 2
|
16天前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
17 1