winform 连接数据库以及显示查询结果

  首先,开始之前,需要知道作为.NET框架最重要的组件之一,ADO.NET扮演着应用程序与数据交互的重要的角色。

  简单的讲,ADO.NET是一组允许.NET开发人员使用标准的,结构化的,甚至无连接的方式与数据交互的技术。对于ADO.NET来说,可以处理数据源是多样的。可以是应用程序唯一使用的创建在内存中数据,也可以是与应用程序分离,存储在存储区域的数据(如文本文件、XML、关系数据库等)。

  具体来说,ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。数据共享使用者应用程序可以使用 ADO.NET 来连接到这些数据源,并检索、处理和更新所包含的数据。

  作为.NET框架的重要组成部分,ADO.NET 类封装在 System.Data.dll 中,并且与 System.Xml.dll 中的 XML 类集成。当编译使用 System.Data 命名空间的代码时,需要引用System.Data.dll 和 System.Xml.dll。

  有关ADO.NET更多的内容,可以参考ADO.NET - 随笔分类 - 木小楠 - 博客园 (cnblogs.com)。写的很好,十分感谢。

 

  正式开始,使用 SqlConnection 来连接数据库,使用 DataGridView 来显示查询的结果。

 

1、获取连接数据库所需的字符串,包括服务器名称,数据库名称,用户名以及密码,可在配置文件中配置,或直接在代码里写死

 

  在配置文件 App.config 中配置的代码:

  <configuration>
  <appSettings>
  <add key="connectionstring" value="server=192.168.3.201;database=Nine_Xhs;uid=sa;pwd=Nine!2021;"/>
  </appSettings>
  </configuration>

 

2、获取数据库连接对象

  public static SqlConnection CreateSqlConn()
  {
    //从配置文件 App.config 中获取数据库连接字符串
    var conStr = ConfigurationManager.AppSettings["connectionstring"];
    SqlConnection conn = new SqlConnection(conStr);
    return conn;
  }

 

3、测试数据库的连通性

  private void button1_Click(object sender, EventArgs e)
  {
    try
    {
      if (conn.State == ConnectionState.Closed)
        {
          conn.Open();
        }

      MessageBox.Show("连接成功","数据库连接测试");
    }
    catch (Exception ex)
    {
      MessageBox.Show("连接失败:"+ ex.Message, "数据库连接测试");
    }
  }

 

4、在窗口中添加 DataGridView 对象,用于显示数据

5、生成数据查询SQL,并将查询结果绑定到 DataGridView 上,在画面进行显示】

  private void button2_Click(object sender, EventArgs e)
  {
    var dataCnt = numericUpDown1.Value;
    dataCnt = dataCnt > 0 ? dataCnt : 5;

    string sql = "Select Top " + dataCnt + " UserId,RedId,NickName,[Desc],Location From UserInfo ";
    var ds = Query(sql);
    if (ds.Tables?.Count > 0)
    {
      var dt = ds.Tables[0];

      //直接绑定DataTable
      dataGridView1.DataSource = dt;

      ////绑定对象列表
      //List<UserInfo> userList = new List<UserInfo>();
      //if (dt.Rows?.Count > 0)
      //{
        // foreach (DataRow row in dt.Rows)
        // {
          // UserInfo user = new UserInfo
          // {
            // UserId = row["UserId"] + "",
            // RedId = row["RedId"] + "",
            // NickName = row["NickName"] + "",
            // Desc = row["Desc"] + "",
            // Location = row["Location"] + "",
          // };

          // userList.Add(user);
        // }
      //}

    //dataGridView1.DataSource = userList;
    }
  }


  public DataSet Query(string sqlStr)
  {
    DataSet ds = new DataSet();
    try
    {
      if (conn.State == ConnectionState.Closed)
      {
        conn.Open();
      }

      SqlDataAdapter command = new SqlDataAdapter(sqlStr, conn);
      command.Fill(ds);
    }
    catch (Exception ex)
    {
      throw new Exception(ex.Message);
    }

    return ds;
  }

 

PS:DataGridView 对象绑定的数据源,DataTable 以及 对象List 都是可以的,显示的效果是一样的。

 

还有更多相关连接应用:

winform查询数据库 - Lee597 - 博客园 (cnblogs.com)

winform 打开excel文件并显示在dataGridView上 - Lee597 - 博客园 (cnblogs.com)

winform 根据dataGridView中的值,来循环使用 - Lee597 - 博客园 (cnblogs.com)

 

 

本文还参考了

【WinForm】 自学笔记二:连接数据库以及查询结果显示 - Nine_Jason - 博客园 (cnblogs.com)

 

特此感谢

 

posted @   Lee597  阅读(783)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示