【数据库】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;
}
相关文章
|
18天前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
2天前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
9 1
|
11天前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
28 11
|
1月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
1月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
8天前
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
|
8天前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
11天前
|
Rust 前端开发 关系型数据库
Tauri 开发实践 — Tauri 集成本地数据库
本文介绍了在 Tauri 框架中集成本地数据库的几种方案,包括直接绑定 SQLite、使用第三方数据库库和使用 tauri-plugin-sql-api 插件。最终选择了 tauri-plugin-sql-api,因为它集成简单、支持多种数据库类型,并且与 Tauri 框架深度整合,提升了开发效率和安全性。文章详细介绍了如何安装和使用该插件,以及如何编写核心代码实现数据库操作。
53 2
|
24天前
|
Java 关系型数据库 数据库连接
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第3天】Spring Boot项目中数据库连接问题可能源于配置错误或依赖缺失。YAML配置文件的格式不正确,如缩进错误,会导致解析失败;而数据库驱动不匹配、连接字符串或认证信息错误同样引发连接异常。解决方法包括检查并修正YAML格式,确认配置属性无误,以及添加正确的数据库驱动依赖。利用日志记录和异常信息分析可辅助问题排查。
59 10
|
18天前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
24 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学