当前位置: 首页 > news >正文

C# 连接 SqlServer 数据库

目录

一、创建表

二、给表添加数据

三、新建 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

相关文章:

  • 【408计算机组成原理】—进位计数制(二)
  • 拆解一下汽车电子软件开发工具链
  • 2021年华中杯数学建模挑战赛B题技术问答社区重复问题识别求解全过程文档及程序
  • 【云原生 | 32】Docker运行数据采集和分析引擎Elasticsearch
  • 有符号数四舍五入的verilog实现
  • 大数据热点城市波动图案例【CSS3实现 + 原理分析 + 源码获取】
  • [Java]深入剖析常见排序
  • vue+ssm+Element实现登录页面的优化和员工管理
  • MySQL死锁产生的原因和解决方法
  • 网站显示不是私密连接怎么加 https 进行加密?(在Nginx或Tengine服务器上安装证书)
  • 【前端验证】通关寄存器与ral_model —— 生成的RTL代码分析(1)
  • Ai-WB2系列模组linux开发环境搭建
  • [PyQt] Pycharm 配置 PyQt 开发环境
  • http和https分别是什么?
  • 如何在 Next.js 中构建进度条指示器
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 《Java编程思想》读书笔记-对象导论
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 2017年终总结、随想
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Apache的80端口被占用以及访问时报错403
  • CAP 一致性协议及应用解析
  • magento 货币换算
  • opencv python Meanshift 和 Camshift
  • Vue学习第二天
  • win10下安装mysql5.7
  • 技术胖1-4季视频复习— (看视频笔记)
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 让你的分享飞起来——极光推出社会化分享组件
  • 使用agvtool更改app version/build
  • 新手搭建网站的主要流程
  • 优秀架构师必须掌握的架构思维
  • 转载:[译] 内容加速黑科技趣谈
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #LLM入门|Prompt#3.3_存储_Memory
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #WEB前端(HTML属性)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (9)目标检测_SSD的原理
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (三)终结任务
  • (学习日记)2024.02.29:UCOSIII第二节
  • (原創) 未来三学期想要修的课 (日記)
  • (转)四层和七层负载均衡的区别
  • .net core控制台应用程序初识
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net 调用php,php 调用.net com组件 --
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET的微型Web框架 Nancy
  • .net经典笔试题
  • .NET委托:一个关于C#的睡前故事
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • :“Failed to access IIS metabase”解决方法