c#数据库: 9.删除和添加新字段/数据更新

先把原来数据表的sexy字段删除,然后重新在添加字段sexy,如果添加成功,sexy列的随机内容会更新.原数据表如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudentAlter
{
    internal class Program
    {
        static void Main(string[] args)
        {Random random = new Random();
            string connectionString =                                                  //数据库连接字符串
         "Data Source=.\\SQLExpress;Database=aq;Trusted_Connection=true;";
            SqlConnection connection = new SqlConnection(connectionString);//创建数据库连接实例
            connection.Open();                                                         //打开数据库连接
            Console.WriteLine("数据库aq连接成功!");
            string sql = "ALTER TABLE staq_info DROP COLUMN sexy;";

            using (SqlCommand command = new SqlCommand(sql, connection))
            {
                command.ExecuteNonQuery();
                Console.WriteLine("字段sexy已删除。");
            }
            Console.ReadKey();
            //ALTER TABLE staq_info DROP COLUMN age, DROP COLUMN grade;

            //为表staq_info增加sexy字段
            SqlCommand cmd = new SqlCommand();                    //创建数据查询类实例
            cmd.Connection = connection;

            cmd.CommandText = "ALTER TABLE staq_info ADD sexy varchar(2)";
            cmd.ExecuteNonQuery();                                //执行添加sex字段SQL语句
            cmd.Dispose();

            //利用数据集对所有学生信息的sex字段赋值
            SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM staq_info",
         "Data Source=.\\SQLExpress;Database=aq;Trusted_Connection=true;");
            DataSet dataSet = new DataSet();                                    //创建数据集
            adapter.Fill(dataSet);                                              //填充数据集
            int columnCount = dataSet.Tables[0].Columns.Count-1; //获取表总列数减1,
            for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)//i表格第几行
            {
                dataSet.Tables[0].Rows[i][columnCount] = random.Next(2) == 0 ? "男" : "女";//修改性别值。[columnCount] 中的值代表在第几列添加(初始是第0列),本例是最后一行
            }
            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);    //将数据集更新以便与数据库协调
            adapter.Update(dataSet);                                   //更新数据集到数据库                                                
            Console.WriteLine("tj成功!");
            Console.ReadKey();


        }
    }
}

 本实例代码主要实现了向数据表中添加新字段。首先利用SqlConnection对象连接学生数据库,然后通过SqlCommand对象执行向学生信息表中增加性别字段的SQL语句,接着通过SqlDataAdapter对象查询修改后的学生表记录。此时所有记录的性别字段都为空,先将查询结果填充到数据集,然后通过逐行为数据集表中最后一列赋值,实现为性别字段赋值,接着创建SqlCommandBuilder协调数据集更新与数据库连接,最后调用SqlDataAdapter对象的Update方法实现将数据集的修改更新到数据库中。

运行C#代码:

然后在SQL Server Management Studio Management Studio 查看更新(先删除后添加)后的结果(先刷新):最后一列对比不同.

---------------------------------------            --------------------------------------

综合测试代码,删除和添加新字段及数据更新:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StudentAlter
{
    internal class Program
    {
        static void Main(string[] args)
        { Random random = new Random();
            string connectionString =                                                  //数据库连接字符串
         "Data Source=.\\SQLExpress;Database=aq;Trusted_Connection=true;";
            SqlConnection connection = new SqlConnection(connectionString);//创建数据库连接实例
            connection.Open();                                                         //打开数据库连接
            Console.WriteLine("数据库aq连接成功!");
            string sql = "ALTER TABLE staq_info DROP COLUMN sexy;";

            try {
                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    command.ExecuteNonQuery();
                    Console.WriteLine("字段sexy已删除。");
                }
            } catch (Exception) { };
            string sq2 = "ALTER TABLE staq_info DROP COLUMN sexy1;";

            try
            {
                using (SqlCommand command = new SqlCommand(sq2, connection))
                {
                    command.ExecuteNonQuery();
                    Console.WriteLine("字段sexy1已删除。");
                }
            }
            catch (Exception) { };

            Console.ReadKey();


            // 为表staq_info增加age字段  
            try { 
            using (SqlCommand cmd1 = new SqlCommand("ALTER TABLE staq_info ADD age int", connection))
            {
                cmd1.ExecuteNonQuery();
            }

             }
            catch (Exception) { };

            try {
            // 为表staq_info增加sexy字段  
            using (SqlCommand cmd = new SqlCommand("ALTER TABLE staq_info ADD sexy varchar(2)", connection))
                {
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception) { };

           
            SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM staq_info",
         "Data Source=.\\SQLExpress;Database=aq;Trusted_Connection=true;");
            DataSet dataSet = new DataSet();                                    //创建数据集
            adapter.Fill(dataSet);                                              //填充数据集
            int columnCount = dataSet.Tables[0].Columns.Count-1; //获取表总列数减1,
           

            for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)//i表格第几行
            {
                dataSet.Tables[0].Rows[i][2] = random.Next(1, 5);//更新第2列(grade)的内容
                dataSet.Tables[0].Rows[i][columnCount-1] = random.Next(20,25);//更新倒数第2列的内容
                dataSet.Tables[0].Rows[i][columnCount] = random.Next(2) == 0 ? "男" : "女";//修改性别值。[columnCount] 中的值代表在第几列添加(初始是第0列),本例是最后一行
            }
            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);    //将数据集更新以便与数据库协调
            adapter.Update(dataSet);                                   //更新数据集到数据库                                                
            Console.WriteLine("tj成功!");
            Console.ReadKey();


        }
    }
}

运行C#代码: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/592137.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux理解文件操作 文件描述符fd 理解重定向 dup2 缓冲区 C语言实现自己的shell

文章目录 前言一、文件相关概念与操作1.1 open()1.2 close()1.3 write()1.4 read()1.4 写入的时候先清空文件内容再写入1.5 追加&#xff08;a && a&#xff09; 二、文件描述符2.1 文件描述符 fd 0 1 2 的理解2.2 FILE结构体&#xff1a;的源代码 三、深入理解文件描述…

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘ 原因是notebook新版本没有notebook.auth 直接输入以下命令即可设置密码 jupyter notebook password

k8s调度原理以及自定义调度器

kube-scheduler 是 kubernetes 的核心组件之一&#xff0c;主要负责整个集群资源的调度功能&#xff0c;根据特定的调度算法和策略&#xff0c;将 Pod 调度到最优的工作节点上面去&#xff0c;从而更加合理、更加充分的利用集群的资源&#xff0c;这也是我们选择使用 kubernete…

Linux---软硬链接

软链接 我们先学习一下怎样创建软链接文件&#xff0c;指令格式为&#xff1a;ln -s 被链接的文件 生成的链接文件名 我们可以这样记忆&#xff1a;ln是link的简称&#xff0c;s是soft的简称。 我们在下面的图片中就是给test文件生成了一个软链接mytest&#xff1a; 我们来解…

数据结构篇其四---栈:后进先出的魔法世界

前言 栈的学习难度非常简单&#xff0c;前提是如果你学过顺序表和单链表的话&#xff0c;我直接说我的观点了&#xff0c;栈就是有限制的顺序表和单链表。 栈只允许一端进行插入删除。栈去除了各种情况复杂的插入删除&#xff0c;只允许一端插入删除的特性&#xff0c;这一种数…

5月4(信息差)

&#x1f384; HDMI ARC国产双精度浮点dsp杜比数码7.1声道解码AC3/dts/AAC环绕声光纤、同轴、USB输入解码板KC33C &#x1f30d; 国铁集团回应高铁票价将上涨 https://finance.eastmoney.com/a/202405043066422773.html ✨ 源代码管理平台GitLab发布人工智能编程助手DuoCha…

【数据结构】您有一份KMP算法教学已到账,请注意查收!!!

KMP算法 导读一、KMP算法1.1 重要术语1.2 部分匹配值1.3 部分匹配值的作用 二、KMP算法原理2.1 从指针的角度理解KMP算法2.2 从匹配的角度理解KMP算法2.3 小结 三、KMP算法的实现3.1 next数组3.2 next数组的计算3.2.1 通过PM值计算next数组3.2.2 通过移位模拟计算next数组3.2.3…

Web Storage 笔记11 网页数据存储

相关内容&#xff1a;Web Storage基本概念、localStorage、sessionStorage、登录注销实例、…… 在制作网页时会希望记录一些信息&#xff0c;例如用户登录状态、计数器或者小游戏等&#xff0c;但是又不希望用到数据库&#xff0c;就可以利用WebStorage技术将数据存储在用户浏…

Kubelet containerd 管理命令 ctr常用操作

镜像常用操作 1. 拉取镜像 ctr images pull docker.io/library/nginx:alpine 指定平台 --all-platforms&#xff1a;所有平台&#xff08;amd64 、arm、386 、ppc64le 等&#xff09;&#xff0c;不加的话下载当前平台架构 --platform&#xff1a;指定linux/amd64平台 ctr …

鸿蒙开发仿咸鱼TabBar

鸿蒙开发自定义TabBar&#xff0c;实现tabBar 上中间按钮凸起效果 第一步、定义数据模型 export default class TabItemData{defaultIcon: ResourceselectedIcon: Resourcetitle: stringisMiddle: booleanconstructor(defaultIcon:Resource, selectedIcon:Resource, title:st…

并发-启动线程的正确姿势

目录 启动线程的正确姿势 Start方法原理解读 Run方法原理解读 常见问题 启动线程的正确姿势 start()与run()方法的比较测试结果可以看出&#xff0c;runnable.run()方法是由main线程执行的&#xff0c;而要子线程执行就一定要先调用start()启动新线程去执行run方法并不能成…

【数据结构】第四讲:双向链表

目录 一、链表的分类 二、双向链表的结构及实现 1.带头双向链表的结构 2.创建节点 3.初始化 4.尾插 5.打印 6.头插 7.尾删 8.头删 9.在pos位置之后插入数据 10.删除pos节点 11.查找 12.销毁 个人主页&#xff1a;深情秋刀鱼-CSDN博客 数据结构专栏&#xff1a;数…

Mac M2 本地下载 Xinference

想要在Mac M2 上部署一个本地的模型。看到了Xinference 这个工具 一、Xorbits Inference 是什么 Xorbits Inference&#xff08;Xinference&#xff09;是一个性能强大且功能全面的分布式推理框架。可用于大语言模型&#xff08;LLM&#xff09;&#xff0c;语音识别模型&…

激动,五四青年节,拿下YashanDB认证YCP

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

中间件之搜索和数据分析组件Elasticsearch

一、概述 1.1介绍 The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash&#xff08;也称为 ELK Stack&#xff09;。 能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视 化。Elaticsearch&#xff0c;简称为 ES&a…

CUDA和显卡驱动

1.安装显卡驱动 https://www.nvidia.com/download/index.aspx?langen-us 由于我的显卡是RTX4060&#xff0c;因此先选择RTX40系列&#xff0c;然后选择RTX4060&#xff0c;进行安装 2.查看显卡对应的CUDA CUDA安装地址&#xff1a;https://developer.nvidia.com/cuda-toolk…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-12-蜂鸣器

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

复旦微JFM7VX690计算后IO接口模块,用于雷达信号处理、数据处理等需要高速密集计算的应用场景

计算后IO接口模块 1 介绍 1.1 产品概述 计算后IO接口模块主要由复旦微JFM7VX690型FPGA、国产以太网收发器YT8521、国产BMC芯片GD32F450、国产CPLD芯片EF2L45BG256B、国产内存颗粒等主要芯片组成&#xff0c;采用标准6U VPX尺寸设计。 本计算后IO接口模块主要用于雷达信号处…

QT+串口调试助手+基本版

一、创建串口调试助手UI界面 1、首先生成串口连接必要参数界面&#xff0c;删除关闭串口控件 2、给参数下拉框添加常见的选项&#xff0c;删除关闭串口控件 3、将串口调试助手参数界面布局整齐&#xff0c;删除关闭串口控件 4、更改控件名字&#xff0c;方便后续编程&#xff…

第五篇:通信脉络:探索计算机外设与总线体系的精髓

通信脉络&#xff1a;探索计算机外设与总线体系的精髓 1 引言 在这个技术日新月异的时代&#xff0c;理解计算机系统的基本构成要素 —— 总线和外设 —— 对于每个从事技术工作的人来说都是至关重要的。这些组件不仅是计算机通信的基石&#xff0c;也直接影响着系统的性能、效…