首页 > 数据库 >C#. 用Winforms连接SQL Server数据库

C#. 用Winforms连接SQL Server数据库

时间:2024-09-19 15:50:33浏览次数:10  
标签:C# 数据库 Server Winforms SQL SqlConnection sa 连接

目录

一. 在 WinForms 应用程序中连接 SQL Server,可以按照以下步骤进行:

1.创建连接字符串

2.使用SqlConnection类创建数据库连接并打开

3.SqlCommand类:允许对数据库表做增删改查等操作

4.SqlDataReader类:获取查询返回的结果集

5.读取完数据后关闭connection的连接

二. 如果连接数据库时出现“登录失败”的异常

1.通常原因

2.解决步骤

三. 在DataGridView表格容器控件中显示数据库中表的数据

1.使用SqlDataAdapter类


一. 在 WinForms 应用程序中连接 SQL Server,可以按照以下步骤进行:

1.创建连接字符串

string connectionString = "Server=your_server_name;Database=your_database_name;User Id=your_username;Password=your_password;";

若server=.    则代表当前使用的计算机(本机)

2.使用SqlConnection类创建数据库连接并打开

            //创建连接
            SqlConnection conn = new SqlConnection(strConn);
            //打开数据库连接
            conn.Open();

后面可加一个MessageBox.Show("数据库连接成功"); 用于检验数据库是否连接成功

3.SqlCommand类:允许对数据库表做增删改查等操作

需要两个参数,第一个参数: sql语句  第二个参数:SqlConnection对象

            string sql = "select * from CrabBox";
            SqlCommand cmd = new SqlCommand(sql,conn);

4.SqlDataReader类:获取查询返回的结果集

            SqlDataReader sdr = cmd.ExecuteReader();
            //通过while循环获取sdr里面的数据
            while (sdr.Read())
            {
                //读取数据库表的数据 
                //MessageBox.Show("蟹盒ID:" + sdr["BoxID"]);

                //将数据库读取出来的内容显示在label标签中
                label1.Text = label1.Text + "\n" +"蟹盒ID:" + sdr["BoxID"];
            }

说明:sdr[""]里面为数据库表的列名,代码运行结果为显示数据库表中某一列的数据

给出了两种显示例子,一种为MessageBox.Show,以弹框的形式显示;另一种为在label组件中显示;都是比较简单的例子。

5.读取完数据后关闭connection的连接

conn.Close();

二. 如果连接数据库时出现“登录失败”的异常

假设使用的用户名为sa,

1.通常原因

  1. 错误的用户名或密码:确认你使用的 sa 用户名和密码是否正确。可以尝试重新输入密码或检查连接字符串中的用户凭据。

  2. SQL Server 服务未启动:确保 SQL Server 实例正在运行。可以通过 SQL Server Management Studio (SSMS) 或服务管理器检查 SQL Server 服务的状态。

  3. SQL Server 配置问题:检查 SQL Server 是否允许 sa 用户进行登录。确保 SQL Server 配置允许 SQL Server 身份验证模式(而不是仅 Windows 身份验证模式)。

  4. SQL Server 实例名称或连接字符串错误:确认你在连接字符串中指定的 SQL Server 实例名称是正确的。可能需要包括实例名称或使用正确的服务器地址。

  5. 网络问题:如果 SQL Server 是远程实例,确保网络连接正常,没有防火墙阻挡连接。

  6. 账户被禁用:检查 sa 用户是否被禁用。可以通过 SQL Server Management Studio 连接到数据库,然后检查 SQL Server 的安全设置。

2.解决步骤

  1. 验证连接字符串: 确保你的连接字符串正确

  2. 检查 SQL Server 服务

    • 打开 SQL Server Configuration Manager,确保 SQL Server 服务正在运行。
    • 如果 SQL Server 实例未运行,尝试启动它。
  3. 检查身份验证模式

    • 使用 SQL Server Management Studio 连接到数据库。
    • 右键点击服务器,选择“属性”。
    • 转到“安全性”页,确保“SQL Server 和 Windows 身份验证模式”被选中。
  4. 检查 sa 用户

    • 在 SQL Server Management Studio 中,展开“安全性”文件夹,选择“登录名”。
    • 找到 sa 用户,右键点击并选择“属性”。
    • 确保 sa 用户没有被禁用,并且密码正确。
  5. 网络和防火墙设置

    • 如果 SQL Server 是远程的,确保网络设置允许连接,并且没有防火墙阻止 SQL Server 端口(默认为 1433)。

三. 在DataGridView表格容器控件中显示数据库中表的数据

1.使用SqlDataAdapter类

简单示例代码(窗体中需要有一个Button和DataGridView控件):

        private void button2_Click(object sender, EventArgs e)
        {
            string strConn = "server=.;database=CrabFarmDB;User ID=sa;Password=admin123";
            SqlConnection conn = new SqlConnection(strConn);
            conn.Open();
            MessageBox.Show("数据库连接成功");

            string sql = "select * from CrabBox";

            //在这里操作gridview
            //这里传入的strConn相当于数据源与sql数据库之间的一种桥接器
            SqlDataAdapter da = new SqlDataAdapter(sql, strConn);
            DataSet ds = new DataSet();//相当于一个数据集

            //开始加载数据源
            da.Fill(ds);
            //开始将数据集与我们的grid控件做关联
            dataGridView1.DataSource = ds.Tables[0];

            //读取完数据后关闭connection的连接
            conn.Close();
        }

标签:C#,数据库,Server,Winforms,SQL,SqlConnection,sa,连接
From: https://blog.csdn.net/qq_42772833/article/details/142348637

相关文章

  • Professional Linux Kernel Architecture(一)
    基于linux内核2.6.24版本,书籍:ProfessionalLinuxKernelArchitecture英文版(可在https://github.com/welldef/os_books.git下载)1一些概念1.1微内核和单体内核微内核:只有最基本的功能直接在中央内核(微内核)中实现。所有其他功能都委托给各自独立的进程,这些进程通过通信接口与......
  • 易优eyoucms网站数据表或视图不存在[错误代码] SQLSTATE[42S02],数据库表不存在。
    数据表或视图不存在[错误代码]SQLSTATE[42S02]:Basetableorviewnotfound:1146Table'fszojdk.web2023_archives'doesn'texist根据提供的错误信息 SQLSTATE[42S02]:Basetableorviewnotfound:1146Table'fszojdk.web2023_archives'doesn'texist,......
  • C++Builder11的静态连接问题的解决
    1、问题用C++Builder11写了一个小程序,想将所有的运行包放在一个exe文件中,方便分发。但就是找不到原来版本中的Static-LinkC++RuntimeLibrary选项。2、经历(1)选择菜单project-options-C++linker去掉LinkwithDynamicRTL右边的√去掉>LinkwiththeDelphiRuntimeLibra......
  • Python使用browser_cookie3库来读取浏览器Cookies
    browser_cookie3是一个用于从浏览器中提取Cookies的Python模块。下面是使用该模块的步骤:1.安装browser_cookie3模块。pipinstallbrowser_cookie32.导入browser_cookie3模块。 import browser_cookie33.提取浏览器Cookies。可以使用下面的代码提取GoogleC......
  • heic转jpg python代码
    做深度学习时,为了减少空间占用,会在拍照时使用heic格式,但是labelimg不能识别这个格式,所以还要转成jpg。搜了一圈没有合适的,怒写这份代码 fromPILimportImageimportpillow_heifimportpiexiffromglobimportglobimportsysdefheic_to_jpg(img_path,save_path): na......
  • 易优eyoucms网站添加自定义新建字段的时候报错
    根据提供的错误信息 SQLSTATE[42000]:Syntaxerrororaccessviolation:1118Rowsizetoolarge.ThemaximumrowsizefortheusedtabletypenotcountingBLOBsis65535.YouhavetochangesomecolumnstoTEXTorBLOBs,这个错误表明数据库表的行大小超过了MySQL......
  • Python的configparser模块中,ConfigParser和RawConfigParser的区别
    在Python的configparser模块中,ConfigParser()和RawConfigParser()是两个不同的类,用于解析配置文件。它们之间的主要区别在于对配置文件中的值进行处理的方式。一、区别1、ConfigParser()类是configparser模块的旧版本,它提供了一些额外的特性,如对配置文件中的值进行插值替换。......
  • IdentityServer4取消使用HTTPS问题
    //Copyright(c)BrockAllen&DominickBaier.Allrightsreserved.//LicensedundertheApacheLicense,Version2.0.SeeLICENSEintheprojectrootforlicenseinformation.usingIdentityModel.Client;usingNewtonsoft.Json.Linq;usingSystem;usin......
  • 易优eyoucms网站插入字段长度超过设定的长度,请联系技术处理。
    报错/core/library/think/db/Connection.php第466行左右插入字段长度超过设定的长度,请联系技术处理。[错误代码]SQLSTATE[22001]:Stringdata,righttruncated:1406Datatoolongforcolumn'extract_code'atrow1解决 SQLSTATE[22001]:Stringdata,righttrun......
  • jeecg v3 modal
    <template><BasicModalv-bind="$attrs"@register="register"title="地图"@visible-change="handleVisibleChange"><divclass="pt-3pxpr-3px"><BasicForm@register="registerFo......