C#关于 SQL Server 数据库的操作

2023-11-01

C# :创建SQL Server数据库、设置SQL Server数据库为只读状态、修改和压缩SQL Server数据库、新建(删除和修改)数据表、修改(新增和删除)数据列

ExpandedBlockStart.gif 代码
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;
using  System.Data.SqlClient;
using  System.Collections;
using  System.Net;
using  System.IO;
using  System.Threading;
namespace  WindowsApplication1
{
    
public   partial   class  Form1 : Form
    {
        
public  Form1()
        {
            InitializeComponent();
        }

        
private   void  InitializeComponent()
        {
            
throw   new  NotImplementedException();
        }
        
private   void  button1_Click( object  sender, EventArgs e)
        {
// 创建SQL Server数据库
             string  MySQL  =   " use master; "   +
            
" IF DB_ID(N'MyDatabase') IS NOT NULL  "   +
            
" DROP DATABASE MyDatabase; "   +
            
" CREATE DATABASE MyDatabase  "   +
            
" ON(NAME=MyDatabase_dat,FILENAME=\ " C:\\MyDatabase.mdf\ " ,SIZE=5,MAXSIZE=10,FILEGROWTH=1)  "   +
            
" LOG ON(NAME=MyDatabase_log,FILENAME=\ " C:\\MyDatabase.ldf\ " ,SIZE=2,MAXSIZE=5,FILEGROWTH=1) " ;
            SqlConnection MyConnection 
=   new  SqlConnection( " Data Source=.;Initial Catalog=;Integrated Security=True " );
            SqlCommand MyCommand 
=   new  SqlCommand(MySQL, MyConnection);
            
try
            {
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                MessageBox.Show(
" 成功创建数据库 " " 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
catch  (Exception ex)
            {
                MessageBox.Show(ex.Message, 
" 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
finally
            {
                MyConnection.Close();
            }
        }
        
private   void  button2_Click( object  sender, EventArgs e)
        {
// 设置SQL Server数据库为只读状态
             string  MySQL  =   " use master;  "   +
                  
" IF DB_ID(N'MyDatabase') IS NOT NULL  "   +
                
" EXEC sp_dboption 'MyDatabase', 'read only', 'TRUE' " ;
            
//  "EXEC sp_dboption 'MyDatabase', 'read only', 'FALSE'";
            SqlConnection MyConnection  =   new  SqlConnection( " Data Source=.;Initial Catalog=;Integrated Security=True " );
            SqlCommand MyCommand 
=   new  SqlCommand(MySQL, MyConnection);
            
try
            {
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                MessageBox.Show(
" 设置MyDatabase数据库为只读状态操作成功! " " 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
catch  (Exception ex)
            {
                MessageBox.Show(ex.Message, 
" 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
finally
            {
                MyConnection.Close();
            }
        }
        
private   void  button3_Click( object  sender, EventArgs e)
        {
// 设置SQL Server数据库为脱机状态
             string  MySQL  =   " use master;  "   +
                  
" IF DB_ID(N'MyDatabase') IS NOT NULL  "   +
                
" EXEC sp_dboption 'MyDatabase', 'offline', 'TRUE' " ;
            
//    "EXEC sp_dboption 'MyDatabase', 'offline', 'false'";
            SqlConnection MyConnection  =   new  SqlConnection( " Data Source=.;Initial Catalog=;Integrated Security=True " );
            SqlCommand MyCommand 
=   new  SqlCommand(MySQL, MyConnection);
            
try
            {
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                MessageBox.Show(
" 设置MyDatabase数据库为脱机状态操作成功! " " 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
catch  (Exception ex)
            {
                MessageBox.Show(ex.Message, 
" 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
finally
            {
                MyConnection.Close();
            }
        }
        
private   void  button5_Click( object  sender, EventArgs e)
        {
// 压缩SQL Server数据库
             string  MySQL  =   " use master; "   +
            
" IF DB_ID(N'MyDatabase') IS NOT NULL  "   +
            
" DBCC SHRINKDATABASE (MyDatabase, 90)  " ;
            SqlConnection MyConnection 
=   new  SqlConnection( " Data Source=.;Initial Catalog=;Integrated Security=True " );
            SqlCommand MyCommand 
=   new  SqlCommand(MySQL, MyConnection);
            
try
            {
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                MessageBox.Show(
" 成功压缩数据库 " " 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
catch  (Exception ex)
            {
                MessageBox.Show(ex.Message, 
" 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
finally
            {
                MyConnection.Close();
            }
        }
        
private   void  button6_Click( object  sender, EventArgs e)
        {
// 在数据库中新建数据表
             string  MySQL  =   " IF OBJECT_ID(N'MyDatabase..商品清单', N'U') IS NOT NULL  "   +
                 
" DROP TABLE 商品清单; "   +
                
" CREATE TABLE 商品清单 ( "   +
                
" [货号] [char] (14) NOT NULL Primary Key, "   +
                
" [条码] [char] (14) NULL , "   +
                
" [拼音编码] [char] (40) NULL, "   +
                
" [品名] [varchar] (80) NULL , "   +
                
" [规格] [varchar] (40) NULL , "   +
                
" [单位] [char] (6) NOT NULL , "   +
                
" [产地] [varchar] (50) NULL , "   +
                
" [类别] [char] (20) NULL , "   +
                
" [进货价] [decimal] (28,6) NULL default(0), "   +
                
" [销售价1] [decimal] (28,6) NULL default(0), "   +
                
" [销售价2] [decimal] (28,6) NULL default(0), "   +
                
" [最低售价] [decimal] (28,6) NULL default(0)) " ;
            SqlConnection MyConnection 
=   new  SqlConnection( " Data Source = .;Database = MyDatabase;Integrated Security=SSPI " );
            SqlCommand MyCommand 
=   new  SqlCommand(MySQL, MyConnection);
            
try
            {
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                MessageBox.Show(
" 成功在MyDatabase数据库中创建数据表 " " 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
catch  (Exception ex)
            {
                MessageBox.Show(ex.Message, 
" 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
finally
            {
                MyConnection.Close();
            }
        }
        
private   void  button7_Click( object  sender, EventArgs e)
        {
// 在数据库中删除数据表
             string  MySQL  =   " IF OBJECT_ID(N'MyDatabase..商品清单', N'U') IS NOT NULL  "   +
                 
" DROP TABLE 商品清单; " ;
            SqlConnection MyConnection 
=   new  SqlConnection( " Data Source = .;Database = MyDatabase;Integrated Security=SSPI " );
            SqlCommand MyCommand 
=   new  SqlCommand(MySQL, MyConnection);
            
try
            {
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                MessageBox.Show(
" 成功在MyDatabase数据库中删除数据表 " " 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
catch  (Exception ex)
            {
                MessageBox.Show(ex.Message, 
" 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
finally
            {
                MyConnection.Close();
            }
        }
        
private   void  button8_Click( object  sender, EventArgs e)
        {
// 在数据表中修改数据列
            
// "[产地] [varchar] (50) NULL ,"
             string  MySQL  =   " ALTER TABLE 商品清单 ALTER COLUMN [产地] [char](100) NOT NULL; " ;
            SqlConnection MyConnection 
=   new  SqlConnection( " Data Source = .;Database = MyDatabase;Integrated Security=SSPI " );
            SqlCommand MyCommand 
=   new  SqlCommand(MySQL, MyConnection);
            
try
            {
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                MessageBox.Show(
" 成功在“商品清单”数据表中修改数据列 " " 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
catch  (Exception ex)
            {
                MessageBox.Show(ex.Message, 
" 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
finally
            {
                MyConnection.Close();
            }
        }
        
private   void  button9_Click( object  sender, EventArgs e)
        {
// 在数据表中添加数据列
             string  MySQL  =   " ALTER TABLE 商品清单 ADD [检验员] [varchar] (50) NULL; " ;
            SqlConnection MyConnection 
=   new  SqlConnection( " Data Source = .;Database = MyDatabase;Integrated Security=SSPI " );
            SqlCommand MyCommand 
=   new  SqlCommand(MySQL, MyConnection);
            
try
            {
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                MessageBox.Show(
" 成功在“商品清单”数据表中添加数据列 " " 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
catch  (Exception ex)
            {
                MessageBox.Show(ex.Message, 
" 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
finally
            {
                MyConnection.Close();
            }
        }
        
private   void  button10_Click( object  sender, EventArgs e)
        {
// 在数据表中删除数据列
             string  MySQL  =   " ALTER TABLE 商品清单 DROP COLUMN [检验员] ; " ;
            SqlConnection MyConnection 
=   new  SqlConnection( " Data Source = .;Database = MyDatabase;Integrated Security=SSPI " );
            SqlCommand MyCommand 
=   new  SqlCommand(MySQL, MyConnection);
            
try
            {
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                MessageBox.Show(
" 成功在“商品清单”数据表中删除数据列 " " 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
catch  (Exception ex)
            {
                MessageBox.Show(ex.Message, 
" 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
finally
            {
                MyConnection.Close();
            }
        }
        
private   void  button11_Click( object  sender, EventArgs e)
        {
// 删除指定数据表中的所有记录
             string  MySQL  =   " TRUNCATE TABLE 商品清单; " ;
            SqlConnection MyConnection 
=   new  SqlConnection( " Data Source = .;Database = MyDatabase;Integrated Security=SSPI " );
            SqlCommand MyCommand 
=   new  SqlCommand(MySQL, MyConnection);
            
try
            {
                MyCommand.Connection.Open();
                MyCommand.ExecuteNonQuery();
                MessageBox.Show(
" 成功在“MyDatabase”数据库中删除“商品清单”数据表的所有记录 " " 信息提示 " , MessageBoxButtons.OK,MessageBoxIcon.Information);
            }
            
catch  (Exception ex)
            {
                MessageBox.Show(ex.Message, 
" 信息提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            
finally
            {
                MyConnection.Close();
            }
        }
    }
}

 

转载于:https://www.cnblogs.com/qiangshu/archive/2009/12/05/1617469.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#关于 SQL Server 数据库的操作 的相关文章

  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 有没有办法在 xcode 上使用 c++0x ?我想使用 gcc 4.4 或更高版本

    我想使用 gcc 4 4 或更高版本进行 iphone 开发 有人知道怎么做吗 不 你不知道 相信我 你不会 Apple 仍保留 gcc 4 2 1 因为 4 2 2 及更高版本使用 GPLv3 这意味着他们必须放弃对其平台的控制 对于 i
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • 将完整模板参数值映射到原始类型

    我想将数字映射到类型 在这个例子中 我将创建一个函数 将 sizeof 结果映射到有符号的原始类型 我想知道是否有更好的方法来完成我在现代 C 中所做的事情 即采用模板化值并将其转换为类型 现在 这可以将大小转换为已知类型 但我似乎无法在标
  • 解析 JWT 令牌以仅获取有效负载内容,无需 C# 或 Blazor 中的外部库

    我正在使用 Blazor 编写可以访问 JWT 的客户端应用程序 我想知道一种简单的方法来读取令牌有效负载内容而不添加额外的依赖项 因为我不需要其他信息 也不需要验证令牌 我认为解析有效负载内容应该足够简单 只需将其写入方法即可 JwtTo
  • 一元 +/- 运算符如何可能导致“-a”或“+a”中的整数提升,“a”是算术数据类型常量/变量?

    这句看似微不足道的台词摘自我的迈克 巴纳汉和布雷迪的 C 书 第 2 8 8 2 节 http publications gbdirect co uk c book chapter2 expressions and arithmetic h
  • C# 开源 NMEA 解析器 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 开源 NMEA 解析器 嗯 我自己也不熟悉 但是一些快速搜索显示了一个代码项目 htt
  • 增强精神、递归和堆栈溢出

    为什么下面的代码在运行时崩溃 它会给出堆栈溢出错误 include
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • .NET 4 的条件编译[重复]

    这个问题在这里已经有答案了 可能的重复 条件编译和框架目标 https stackoverflow com questions 2923210 c sharp conditional compilation and framework ta
  • 使用 jQuery 从 ASP.Net JSON 服务获取数据

    我正在尝试调用 Google 地图地理编码 API 从纬度 经度对中获取格式化的地址 然后将其记录到控制台 我正在尝试获取为给定位置返回的第一个 formatted address 项目 我很简单无法从 JSON 中提取该项目 我不知道为什
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo

随机推荐

  • 代码管理_阿里如何管理代码分支

    文章转载自 https mp weixin qq com s 0N3isbSZL4fM5HjZo1aafA 背景 在阿里内部 流行着许多有意思的工程实践 有些实践通过工具和流程嵌在集团的大环境里 外界不容易复制 有些实践则是流露在大家的日常
  • C++移动构造函数

    一 背景 拷贝构造函数又分为浅拷贝和深拷贝 但是存在如下问题 浅拷贝 当类中有指针时 直接复制 会使多个指针指向同一块内存 导致重复析构 深拷贝 每次都是重新赋值一份 这种方法内存消耗较大 因此C 就提供了移动构造函数 当需要动态分配内存或
  • linux上的arm虚拟机,ARM Linux教程之一:安装VirtualBox虚拟机

    虚拟机 Virtual Machine 指通过软件模拟的具有完整硬件系统功能的 运行在一个完全隔离环境中的完整计算机系统 通过虚拟机软件 你可以在一台物理计算机上模拟出另一台或多台虚拟的计算机 这些虚拟机完全就像真正的计算机那样进行工作 例
  • 网易笔试:给出n个物品,每个物品都有自己的价值,每个物品只有一件,这些物品需要分给两个人,要求分配完之后,两个人的物品价值相同。分配完成之后,丢弃剩下的物品,求最少要丢弃多少物品。

    题目描述 给出n个物品 每个物品都有自己的价值 每个物品只有一件 这些物品需要分给两个人 要求分配完之后 两个人的物品价值相同 分配完成之后 会丢弃剩下的物品 求最少要丢弃多少物品 输入 输入第一行为总的测试数据个数 第二行为物品个数n 第
  • mysql 表名 字段名_MySQL 查询所有数据库名和表名及字段名

    MySQL中查询所有数据库名和表名 1 查询所有数据库 show databases 2 查询指定数据库中所有表名 select table name from information schema tables where table s
  • 如何使用Windows学习Linux?

    作为一个开发人员 和服务器打交道是必不可少的 好多开发人员使用的是Windows 要学习Linux就得需要一台linux服务器 简单点使用VMware 或者掏钱各大云厂商购买一台服务器 但是作为初学者 只要你有一台Windows电脑 就可以
  • Spring框架(一)Spring核心,设计理念,创建,优缺点,使用场景···

    目录 一 什么是Spring 二 Spring的优缺点 三 Spring的设计理念和核心 目标 四 什么场景使用Spring 五 创建并使用Spring 六 Spring由哪些模块组成 七 Spring框架使用了哪些设计模式 源码 八 sp
  • Moonbeam开发课程的下一步:Moonbuilder闪亮登场

    本文有所删减 全文链接 Moonbeam开发课程的下一步 Moonbuilder闪亮登场 2021年12月3日 由Moonbeam中文团队与波卡技术社区OneBlock 联合主办的第一期 Moonbeam开发者入门课程 结业典礼以线上直播的
  • 搭建高可用 RocketMQ 集群

    RocketMQ发展历史 RocketMQ是一个由阿里巴巴开源的消息中间件 2012年开源 2017年成为apache顶级项目 RocketMQ在阿里内部应用是非常广泛的 阿里内部的几千个应用都运行在RocketMQ之上 双十一期间需要处理
  • @Resource和@Autowired注解的区别

    介绍 Resource和 Autowired都是做bean的注入时使用 但其实 Resource并不是Spring的注解 它的包是javax annotation Resource 需要导入 但是Spring支持该注解的注入 Spring不
  • 硬件设计31之LVDS与TMDS信号

    1 LVDS基础 原理 图文讲解 LVDS是一种低摆幅的差分信号技术 它使得信号能在差分PCB 线对或平衡电缆上以几百Mbps的速率传输 其低压幅和低电流驱动输出实现了低噪声和低功耗 IEEE 在两个标准中对LVDS 信号进行了定义 ANS
  • 音视频 SDL简介

    一 SDL简介 SDL Simple DirectMedia Layer 是一套开放源代码的跨平台多媒体开发库 使用C语言写成 SDL提供了数种控制图像 声音 输出入的函数 让开发者只要用相同或是相似的代码就可以开发出跨多个平台 Linux
  • 911接线员(C++制作)

    哈喽 鸽了许久的酱某终于回来啦 又来整新活了 在中国 紧急拨号一般分成 110 120 119 但在美国 他们的救援电话是一体的 那就是 911 一款名叫 911接线员 的游戏便应运而生了 但这并不是酱某我的游戏 今天我们就要复刻一下这款策
  • 字符串模式匹配

    字符串模式匹配 1 BF算法 初始时让目标T的第 0 位与模式P的第 0 位对齐 顺序比对目标T与模式P中的对应字符 若 P 与 T 比对发现对应位不匹配 则本趟失配 将 P 右移一位与 T 对齐 进行下一趟比对 若 P 与 T 对应位都相
  • STM8硬件IIC从机

    一 平台 芯片 STM8S103F3P6 环境 IAR STVP 系统 WIN7 二 目的 STM8S103F3P6 使用STM8标准库开发 角色 从机 方式 硬件IIC STM32H7 角色 主机 方式 IO口模拟IIC主机 主机发送命令
  • spark安装部署

    spark安装部署 需要指导私信 所有节点安装scala 安装scala需要安装openjdk 8 jre 当前用户如果没有sudo权限可将其加入sudo组里 以ubuntu2204 LTS为例 sudo apt update sudo a
  • 2023护网日记,护网工作内容、护网事件、告警流量分析

    2023护网日记 一 监控设备 二 工作内容 三 安全事件 1 失陷主机排查 2 后门网站修复 四 告警流量分析 1 信息泄露 2 SQL注入 3 文件上传 4 XSS 跨站脚本 5 代码执行 今年 HW 行动正式开启人员招募 总的来说 人
  • JMETER接口测试,参数关联,断言,定时器,前置处理器,后置处理器,cookie

    jmeter如何测试接口 jmeter可以做性能测试 当然同样可以用来做接口的自动测试 打开jmeter图形界面 右键添加一个线程组 取名 API接口测试 添加一个事务控制器 可以简单的先理解为一个接口组 例如 文件接口 用户接口 登录接口
  • LED+串口通信小试牛刀

    目录 一 搭建STM32的开发环境 1 安装STM32CubeMX 2 安装MDK5 二 闪烁原理 三 STM32CUBEMX生成代码 四 keil仿真调试并生成hex文件 五 运行结果 六 STM32通过串口通信 汇编 1 USART介绍
  • C#关于 SQL Server 数据库的操作

    C 创建SQL Server数据库 设置SQL Server数据库为只读状态 修改和压缩SQL Server数据库 新建 删除和修改 数据表 修改 新增和删除 数据列 代码 using System using System Collect