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#代码: 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机公交语音报站系统设计 含源码,Proteus仿真原理图

资料下载地址&#xff1a;基于单片机公交语音报站系统设计 含源码,Proteus仿真原理图 1、前言 系统的总体设计需要充分运用STC单片机作为主控控制芯片&#xff0c;完成主控控制电路的基本设计&#xff0c;辅助控制电路是语音控制电路、12864显示电路、按键控制电路、…

Apache POI 在java中处理excel

介绍: Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI 都是用于操作 Excel 文件。 如何使用: 1.maven坐标引入 <depend…

java-常量池

public class ConstantTest {public static final String s1 "我爱北京天安门";public static final String s2 "我爱北京天安门";public static void main(String[] args) {ConstantTest constantTest new ConstantTest();} }

Kubernetes 弃用Docker后 Kubelet切换到Containerd

containerd 是一个高级容器运行时&#xff0c;又名 容器管理器。简单来说&#xff0c;它是一个守护进程&#xff0c;在单个主机上管理完整的容器生命周期&#xff1a;创建、启动、停止容器、拉取和存储镜像、配置挂载、网络等。 containerd 旨在轻松嵌入到更大的系统中。Docke…

stable diffusion controlnet前处理中的图像resize

在SD controlnet应用中&#xff0c;一般都要先安装controlnet_aux&#xff0c;并在项目代码中import相关前处理模块&#xff0c;如下所示。 在对control image进行前处理&#xff08;比如找边缘&#xff0c;人体特征点&#xff09;之前&#xff0c;往往会图像进行resize&#x…

【Linux系统编程】30.pthread_exit、pthread_join、pthread_cancel

目录 pthread_exit 参数retval 测试代码1 测试结果 pthread_join 参数thread 参数retvsl 返回值 测试代码2 测试结果 pthread_cancel 参数thread 返回值 测试代码3 测试结果 pthread_exit 退出当前线程。 man 3 pthread_exit 参数retval 退出值。 NULL&#xf…

JAVA面试专题-Redis

你在最近的项目中哪些场景使用了Redis 缓存 缓存穿透 缓存穿透&#xff1a;查询一个不存在的数据&#xff0c;mysql查询不到数据也不好直接写入缓存&#xff0c;导致每次请求都查数据库。 解决方案一&#xff1a;缓存空数据&#xff0c;即使查询返回的数据为空&#xff0c;也把…

学习 Rust 第 23 天:闭包

Rust 闭包提供了简洁、富有表现力的匿名函数来捕获周围的变量。它们简化了代码&#xff0c;提供了存储、参数传递和函数重构方面的灵活性。它们与泛型的交互增强了灵活性&#xff0c;而捕获模式则促进了有效的所有权和可变性管理。从本质上讲&#xff0c;闭包是 Rust 的基础&am…

(7)快速调优

文章目录 前言 1 安装脚本 2 运行 QuikTune 3 高级配置 前言 VTOL QuikTune Lua 脚本简化了为多旋翼飞行器的姿态控制参数寻找最佳调整的过程。 脚本会缓慢增加相关增益&#xff0c;直到检测到振荡。然后&#xff0c;它将增益降低 60%&#xff0c;并进入下一个增益。所有增…

24五一杯B题思路分享+分析问题

回顾问题 ### 问题1&#xff1a;小型交通网络的交通需求分配 1. **理解问题**&#xff1a;首先&#xff0c;需要理解交通网络的结构和各起点-终点对之间的交通需求。 2. **建立模型**&#xff1a;使用线性规划、动态规划或启发式算法来分配交通量到不同的路径上。 3. **优化目…

汽车制造业安全事故频发,如何才能安全进行设计图纸文件外发?

汽车制造业产业链长&#xff0c;关联度高&#xff0c;汽车制造上游行业主要为钢铁、化工等行业&#xff0c;下游主要为个人消 费、基建、客运和军事等。在汽车制造的整个生命周期中&#xff0c;企业与上下游供应商、合作商之间有频繁、密切的数据交换&#xff0c;企业需要将设计…

windows11安装nginx

1.解压nginx安装包到没有中文的目录 2.双击运行nginx.exe 3.任务管理器查看是否有nginx进程 4.任务管理器->性能->资源监视器 5.网络->侦听端口&#xff0c;查看nginx侦听的端口&#xff0c;这里是90端口