如何使用 C# 从 SQL Server 数据库中逐行将数据检索到 datagridview 中

Posted

技术标签:

【中文标题】如何使用 C# 从 SQL Server 数据库中逐行将数据检索到 datagridview 中【英文标题】:How to retrieve data into a datagridview row by row from a SQL Server database using C# 【发布时间】:2021-10-02 16:56:35 【问题描述】:

我正在开发一个 C# Windows 窗体应用程序。我需要从 SQL Server 数据库中将数据检索到 datagridview 中。

我的程序是如何工作的:

    在文本框中输入产品代码 点击“显示按钮”

然后将与产品代码相关的产品详细信息(名称和价格)加载到 datagridview 的第一行。

当使用另一个代码完成此操作时,我需要将数据加载到下一行。

但问题是通过覆盖现有数据,检索数据仅加载到第一行。没有逐行加载。

如何在通过产品代码搜索数据时将数据放到下一行而不丢失 datagridview 中的现有数据?任何帮助将不胜感激。

Image of my program

这是我当前的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Retrieve_Data_In_Datagridview

    public partial class Form1 : Form
    
        SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=InventoryManagement;Integrated Security=True");

        public Form1()
        
            InitializeComponent();
        

        private void bind_data()
        
            SqlCommand cmd = new SqlCommand("SELECT [product_code], [product_name], [price], [discounted_price] FROM [product_tab] WHERE [product_code] = @parm1", conn);
            cmd.Parameters.AddWithValue("@parm1", textBox1.Text);

            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;

            DataTable dt = new DataTable();
            dt.Clear();
            da.Fill(dt);

            dataGridView1.DataSource = dt;
            
            //DataGridView1 navigating to next row
            int nRow;
            nRow = dataGridView1.CurrentCell.RowIndex;

            if (nRow < dataGridView1.RowCount)
            
                dataGridView1.CurrentCell = dataGridView1.Rows[++nRow].Cells[0];
            
        

        private void button1_Click(object sender, EventArgs e)
        
            bind_data();
        
    

【问题讨论】:

代码行…dataGridView1.DataSource = dt;…将用dt“替换”现有的网格数据源。如果你想“组合”这两个表,我猜你可以使用DataTable.ImportRow(DataRow) Method 将查询中的所有行导入现有的网格数据源。鉴于此,您似乎需要创建一个“全局”DataTable 以绑定到网格。 【参考方案1】:

问题基本上是每次您这样做时:dataGridView1.DataSource = dt; 您将源更改为仅包含上次查询结果的新数据表。 这是您需要的东西: [https://***.com/questions/9608647/how-to-add-new-row-to-datagridview]

【讨论】:

以上是关于如何使用 C# 从 SQL Server 数据库中逐行将数据检索到 datagridview 中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 从 ASP.NET 中的 SQL Server 数据库中检索和显示 GridView 中的值

如何从 C# 代码将 SQL Server CE 迁移到 SQL Server 2012 Express

如何使用 C# 将数据表从 SQL Server 转换为 Excel [重复]

Winforms:如何使用 C# 将图片上传到 SQL Server 数据库

如何使用 C# 在 SQL Server 数据库中保存 DataGridViewComboBoxColumn

如何从 c# 将 SQL Server 数据库转换/导出到 MSAccess