C# 连接 SqlServer 数据库

2023-05-16

目录

一、创建表

二、给表添加数据

三、新建 C# 项目

四、SqlServerHelper

五、连接数据库


一、创建表

首先,新建一个数据库 Test,然后新建一个表 Users,字段名如下图,因为暂时只是测试,所以不需要太多的列名,安装 SQL Server 和 SQL Server 管理工具这些这里就不过多介绍了,可以参考下面的帖子:

SQL Server 2019 安装教程_熊思宇的博客-CSDN博客_数据库2019安装教程

字段名如下图

鼠标右键点击,设置主键

当 Id 旁边出现一个钥匙状的图标时,则为设置成功。

按 Ctrl + S 进行保存,然后填入 表名,

 刷新一下数据库,在表的下面就可以看到刚刚创建的表了

 

二、给表添加数据

在这里我就不用 SQL 语句了,直接用编辑器操作,只需要随便添加几个列的数据即可。

鼠标右键点击 User 表,选择 编辑前200行。

 这里随便添加点击一点数据

 

 那么此时给表添加数据 就完成了

三、新建 C# 项目

这里就新建一个 WPF 项目吧,界面中就一个按钮,其他的什么都没有,

界面代码:

<Window x:Class="Lathe.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Lathe"
        mc:Ignorable="d" WindowStartupLocation ="CenterScreen"
        Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
    <Grid>
        <Button Content="连接数据库" Width="100" Height="30" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="32,39,0,0" Click="ConnectDatabase_OnClick" />
    </Grid>
</Window>

界面逻辑:

using Lathe.SqlServer;
using System;
using System.Data;
using System.Windows;

namespace Lathe
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

        }

        //连接数据库 点击事件
        public void ConnectDatabase_OnClick(object sender, RoutedEventArgs e)
        {

        }
    }
}

 

四、SqlServerHelper

添加一个类 SqlServerHelper

代码:

using System.Data;
using System.Data.SqlClient;

namespace Lathe.SqlServer
{
    internal class SqlServerHelper
    {
        /// <summary>
        /// 连接字符串
        /// </summary>
        private string strconn = string.Empty;

        public SqlServerHelper(string conn)
        {
            //读取配置文件
            //strconn = ConfigurationManager.AppSettings["Conn"].ToString();
            //strconn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
            strconn = conn;
        }

        /// <summary>
        /// 执行增删改SQL语句
        /// </summary>
        /// <param name="cmdText">SQL语句</param>
        /// <returns></returns>
        public int ExecuteNonQuery(string cmdText)
        {
            using (SqlConnection conn = new SqlConnection(strconn))
            {
                conn.Open();
                return ExecuteNonQuery(conn, cmdText);
            }
        }

        /// <summary>
        /// 执行增删改SQL语句
        /// </summary>
        /// <param name="conn">SqlConnection</param>
        /// <param name="cmdText">SQL语句<</param>
        /// <returns></returns>
        public int ExecuteNonQuery(SqlConnection conn, string cmdText)
        {
            int res;
            using (SqlCommand cmd = new SqlCommand(cmdText, conn))
            {
                cmd.CommandType = CommandType.Text;
                res = cmd.ExecuteNonQuery();
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                    conn.Dispose();
                }
            }
            return res;
        }

        /// <summary>
        /// 执行查询SQL语句
        /// </summary>
        /// <param name="cmdText">SQL语句</param>
        /// <returns></returns>
        public DataTable ExecuteDataTable(string cmdText)
        {
            using (SqlConnection conn = new SqlConnection(strconn))
            {
                conn.Open();
                return ExecuteDataTable(conn, cmdText);
            }
        }

        /// <summary>
        /// 执行查询SQL语句
        /// </summary>
        /// <param name="conn">SqlConnection</param>
        /// <param name="cmdText">SQL语句</param>
        /// <returns></returns>
        private DataTable ExecuteDataTable(SqlConnection conn, string cmdText)
        {
            DataTable dt = new DataTable();
            using (SqlCommand cmd = new SqlCommand(cmdText, conn))
            {
                cmd.CommandType = CommandType.Text;
                using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
                {
                    sda.Fill(dt);
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                        conn.Dispose();
                    }
                }
            }
            return dt;
        }

        /// <summary>
        /// 执行查询SQL语句
        /// </summary>
        /// <param name="cmdText">SQL语句</param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string cmdText)
        {
            using (SqlConnection conn = new SqlConnection(strconn))
            {
                conn.Open();
                return ExecuteQuery(conn, cmdText);
            }
        }

        /// <summary>
        /// 执行查询SQL语句
        /// </summary>
        /// <param name="conn">SqlConnection</param>
        /// <param name="cmdText">SQL语句</param>
        /// <returns></returns>
        public DataTable ExecuteQuery(SqlConnection conn, string cmdText)
        {
            DataTable dt = new DataTable();
            using (SqlCommand cmd = new SqlCommand(cmdText, conn))
            {
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    dt.Load(sdr);
                    sdr.Close();
                    sdr.Dispose();
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                        conn.Dispose();
                    }
                }
            }
            return dt;
        }

    }
}

五、连接数据库

修改界面逻辑代码

using Lathe.SqlServer;
using System;
using System.Data;
using System.Windows;

namespace Lathe
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private SqlServerHelper SqlServerHelpers;

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            string conn = "server=.;dataBase=Test;uid=sa;pwd=123456";
            SqlServerHelpers = new SqlServerHelper(conn);
        }

        //连接数据库 点击事件
        public void ConnectDatabase_OnClick(object sender, RoutedEventArgs e)
        {
            string sql = "SELECT Names FROM Users";
            DataTable dataTable = SqlServerHelpers.ExecuteQuery(sql);
            if(dataTable != null)
            {
                //打印所有列名
                string columnName = string.Empty;
                for (int i = 0; i < dataTable.Columns.Count; i++)
                {
                    //columnName += dataTable.Columns[i].ColumnName + " | ";
                    columnName += string.Format("{0}({1}) | ", dataTable.Columns[i].ColumnName, i);
                }
                Console.WriteLine(columnName);
                Console.WriteLine("======================");

                //打印每一行的数据
                foreach (DataRow row in dataTable.Rows)
                {
                    string columnStr = string.Empty;
                    foreach (DataColumn column in dataTable.Columns)
                    {
                        columnStr += row[column] + " | ";
                    }
                    Console.WriteLine(columnStr);
                }
            }
        }
    }
}

运行

 这样就获取到了数据库的数据了

 

end

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

C# 连接 SqlServer 数据库 的相关文章

  • 如何使用一个命令删除 SQL 数据库中的所有索引?

    那么 如何通过一条命令删除 SQL 数据库中的所有索引呢 我有这个命令可以获取所有 20 个左右的 drop 语句 但是如何从这个 结果集 运行所有这些 drop 语句呢 select from vw drop idnex 给我相同列表的另
  • 无法与重定向器建立连接。确保“sql browser”服务正在运行

    所以我尝试这个 sql server 2012 由于这个错误我无法打开任何 ssis 包 无法与重定向器建立连接 确保 sql browser 服务正在运行 我的 Sql 浏览器肯定正在运行 我尝试在本地服务 本地系统和网络下更改它 仍然没
  • 更改表添加列并在同一条件 IF 语句中更新新列

    我正在尝试添加列并在同一 if 语句中更新它 BEGIN TRAN IF NOT EXISTS SELECT 1 FROM sys columns WHERE Name N Code AND Object ID Object ID N Te
  • 计算2个日期之间每个日期的记录数

    我必须创建一个查询来返回多轴图表的结果 我需要计算为 2 个日期之间的每个日期创建的 ID 数量 我试过这个 DECLARE StartDate datetime2 7 11 1 2020 EndDate datetime2 7 2 22
  • 将 SQL Server 2008 DB 迁移到 Postgres [重复]

    这个问题在这里已经有答案了 我想将 SQL Server 2008 数据库迁移到 Postgres 有没有一种无痛的方法来做到这一点 是否有任何工具可以扫描架构和存储过程以标记兼容性问题 无痛http dbconvert com conve
  • C# 和 SQL Server:如果字符串值为空,如何在命令参数中插入 DBNull.Value?

    我已经搜索了几个小时 但找不到解决方案 我正在将一些字符串插入 SQL 但是有时 我用来执行此操作的方法可能包含空字符串 即 因此我想在 SQL Server 中插入一个空值 首先我测试我的方法以确保我能够插入DBNull Value通过使
  • 如何在 SQL Server 2012 中选择除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以选择所有列 但只选择我不想选择的特定列 我的意思是有时我会遇到这样的问题 表有数百个字段 而我只需要删除一个字段 我需要重写所有列吗 有什么窍门吗 喜欢select
  • 重用 t-sql 游标的起始位置?

    我正在开发一个在临时表上使用游标的存储过程 我已经阅读了一些关于为什么不需要游标的内容 但在这种情况下我相信我仍然需要使用游标 在我的过程中 我需要遍历表的行两次 声明游标后 已经单步执行临时表并关闭游标 重新打开时游标的位置是否仍保留在表
  • SQL Server 文件操作?

    使用 SQL Server 2005 如何使用 T SQL 将文件读入 SPROC 所以 假设我有一个像这样的 CSV 文件 ID OtherUselessData 1 asdf 2 asdf 3 asdf etc 我基本上想这样做 Sel
  • 如何将 SQL Server 中同一表中的一列插入到另一列中

    我需要将一列的数据插入到同一个表中的另一列中 谁能告诉我这个怎么写 Thanks UPDATE table SET col 2 col 1
  • 一张表中按最大日期过滤重复行的 SQL 查询

    我有一个 SQL 数据库 persons 它具有基于 IDNum 列的重复条目 我需要查询条目并仅根据最新创建日期显示行或重复条目 这是查询 SELECT IDNum PersonPGUID CreatedDateTime FirstNam
  • SQL Server 读提交隔离级别到底如何工作?

    恕我直言 我发现两个关于如何进行不一致的描述ReadCommitted有效 均在 MSDN 文档中 https msdn microsoft com en us library ms173763 aspx https msdn micros
  • 查询嵌套查询结果中两列的位置

    我正在编写这样的查询 select from myTable where X in select X from Y and XX in select X from Y X 列和 XX 列的值必须位于同一查询的结果中 select X fro
  • “必须声明标量变量”错误[重复]

    这个问题在这里已经有答案了 必须声明标量变量 Id SqlConnection con new SqlConnection connectionstring con Open SqlCommand cmd new SqlCommand cm
  • SQL Server - 仅执行存储过程角色

    如何创建只能运行的自定义 SQL Server 数据库服务器角色SELECT查询和存储过程 这意味着 该角色的用户不允许执行自定义查询 但可以运行具有 CRUD 和 SysAdmin 语句的存储过程 UPDATES DELETES ALTE
  • 当两个表非常相似时,什么时候应该将它们合并?

    我有事件和照片 然后对两者进行评论 现在 我有两个评论表 一个用于与事件相关的评论 另一个用于照片评论 架构与此类似 CREATE TABLE EventComments CommentId int EventId int Comment
  • 在 SQL Server 中获取帐户“锁定”状态

    我想解锁 SQL Server 中的一个帐户 在解锁之前 我必须检查该帐户是否被锁定 我只想在帐户被锁定时解锁 是否有任何 SQL 查询或存储过程来获取 SQL 用户的 锁定 状态 代表 Alex K 发布答案 SELECT LOGINPR
  • SQL Server - SQL 替换整个数据库中所有表中的所有列

    这是一个很遥远的事情 我猜这个问题没有简单的答案 但是 我继承了一个数据库 其中填充了一些可怕的数据 许多包含描述的行都有回车符 这意味着当我们 BCP 输出数据时 它会带有回车符 我的问题 有没有办法在 MS SQL Server 中对整
  • 在 SQL Management Studio 2012 中调试

    我正在使用 Management Studio 2012 但无法调试任何 SQL 代码 在我点击 调试 按钮后 左侧没有看到任何绿色箭头 并且我的 SQL 对象都没有加载到内存中 当我将光标移到我设置的断点上时 我收到此消息 The bre
  • 在 SQL Server 中获取一周的第一天

    我试图按周对记录进行分组 将聚合日期存储为一周的第一天 然而 我用于四舍五入日期的标准技术似乎无法在几周内正常工作 尽管它可以在天 月 年 季度和我应用的任何其他时间范围内正常工作 这是 SQL select start of week d

随机推荐

  • YOLO-V1至YOLO-V4学习笔记

    YOLO学习笔记 YOLO学习笔记一 YOLO V1二 YOLO V2 xff1a 三 YOLO V3 xff1a 四 YOLO V4 xff1a YOLO学习笔记 一 YOLO V1 针对对FasterR CNN改进 xff0c 取消了区
  • 【记录+解决】ubuntu服务器显卡驱动安装;Ubuntu20.04重启后找不到Nvidia显卡驱动

    记录ubuntu服务器显卡驱动安装 一次ubuntu服务器显卡驱动安装历程 xff0c 简单记录 1 下载Nvidia Linux驱动到本地 Nvidia Linux XXX run 2 停用桌面 xff0c 安装驱动 span class
  • 【解决】ubuntu桌面无法进入问题

    ubuntu桌面崩溃 xff0c 无法进入 记录一次ubuntu桌面崩溃无法进入系统桌面问题的解决 xff0c 无法进入桌面 xff0c 但可以进入终端的情况下可以参考解决 span class token comment 进入终端 spa
  • jetson tx2安装opencv

    Jstson TX2 安装opencv 参考 xff1a https blog csdn net QLULIBIN article details 84072356 版本 xff1a Jetson TX2JetPack3 2OpenCV3
  • C++符号修饰Name-mangling

    C 43 43 符号修饰 C语言符号修饰 在上古时期 xff0c 编译器编译源代码产生目标文件时 xff0c 符号名与相应的变量和函数的名字是一样的 比如一个汇编源代码里面包含一个函数foo xff0c 那么汇编器将其编译成目标文件后 xf
  • VS Code远程SSH免密登录配置

    最近更新了VS Code之后 xff0c 发现Remote ssh拓展里的端口转发功能没了 xff0c 很伤心 xff0c 在探索的同时 xff0c 顺手配置了一下VS Code ssh免密登录 xff0c 以省去每次连接远程文件夹时输入两
  • 目标检测之一(传统算法和深度学习的源码学习)

    目标检测之一 xff08 传统算法和深度学习的源码学习 xff09 本系列写一写关于目标检测的东西 xff0c 包括传统算法和深度学习的方法都会涉及到 xff0c 注重实验而不着重理论 xff0c 理论相关的看论文去哈 xff0c 主要依赖
  • FreeRTOS中任务切换过程的分析

    FreeRTOS中Pendsv任务切换过程的分析 一 Pendsv中断任务解析 xff08 1 xff09 uxCriticalNesting 是进入临界区的次数 xff08 2 xff09 pxCurrentTCB是FreeRTOS运行时
  • CentOS6关闭防火墙使用以下命令

    cmd命令关闭防火墙 net stop mpssvc CentOS6关闭防火墙使用以下命令 xff0c 临时关闭 service iptables stop 禁止开机启动 chkconfig iptables off CentOS7中若使用
  • 《软件工程》试题举例-简答题

    Please give out 3 pieces of recommendations regarding language independent good programming practice 6 marks 良好的编程实践的建议
  • 2020届电子信息类专业保研经历分享

    文章目录 一 个人基本情况二 初心三 夏令营 九推情况介绍1 上海交大自动化系直硕面试 xff08 7月8日 xff09 2 中科大信息学院夏令营 xff08 7月15日 xff09 3 中科院自动化所夏令营 xff08 7月23日 xff
  • RGB图与灰度图相互转换关系表达式

    RGB图转灰度图 1 Y 61 0 3R 43 0 59G 43 0 11B 2 平均值法 xff0c 将RGB平均 灰度图转RGB图 先将单通道的灰度图转为三通道的RGB图 xff0c 各通道值的初值赋值为与灰度值相同 然后按照下式映射关
  • sklearn包导入错误:ImportError: cannot import name ‘Type‘解决办法

    在python3 5环境下使用pip直接安装sklearn包后 xff0c 导入出现如下错误 xff1a 仔细观察报错信息可以发现 xff0c 出错的是sklearn中使用到的scipy包 单独导入scipy包发现出错 xff1a 看来 x
  • PyTorch Dataloader报错ValueError: num_samples的另一种可能原因

    先粘报错信息 xff1a Traceback most recent call last File train py line 169 in train test File train py line 29 in train test da
  • Focal loss变种汇总

    VariFocal loss 只对负样本做难易样本挖掘 xff08 正样本数量少 xff0c 不做loss压缩 xff09 Generalized Focal loss xff1a quality focal loss 43 distrib
  • 视觉Transformer中的位置编码方式

    绝对位置编码 基本形式 xff1a x 61 x 43 p 可学习的绝对位置编码 xff08 ViT xff09 ViT中提出的位置编码方式简单粗暴 xff0c 设置一组可学习的编码tokens xff0c 并在patch embeding
  • 秋招问题汇总

    1 Python变量作用域 xff1a 局部作用域 xff08 Local xff0c 简写为 L xff09 作用于闭包函数外的函数中的作用域 xff08 Enclosing xff0c 简写为 E xff09 全局作用域 xff08 G
  • 38、OpenCV之C++教程

    一 OpenCV的下载与安装 下载完成后会得到一个 opencv 3 4 15 vc14 vc15 exe 文件 点击运行后会生成一个文件夹 此文件夹为下一步工程创建使用 xff0c 文件夹可移动 复制和重命名 xff0c 这里命名如下 x
  • Java大数据之路--HDFS详解(3)--基本命令

    HDFS 分布式文件存储系统 基本命令 目录 HDFS 分布式文件存储系统 基本命令 一 常见命令 二 其他命令 一 常见命令 命令 说明 hadoop fs mkdir park 在hdfs 的根目录下 xff0c 创建 park目录 h
  • C# 连接 SqlServer 数据库

    目录 一 创建表 二 给表添加数据 三 新建 C 项目 四 SqlServerHelper 五 连接数据库 一 创建表 首先 xff0c 新建一个数据库 Test xff0c 然后新建一个表 Users xff0c 字段名如下图 xff0c