如何通过数据网格制作数据库

本文关键字:数据库 网格 数据网 何通过 数据 | 更新日期: 2023-09-27 17:56:03

>伙计们,这是我想出的,我不知道不允许我更新数据库中的表的问题是什么

伙计们,我需要你的帮助,我需要通过使用 C# 的数据grid来更新我的数据库,到目前为止,我所能做的就是能够看到我直接输入的 sql 服务器中的值。

string sConnectionString = "Data Source=localhost;Initial Catalog=ScratchCardSystem2;Integrated Security=True;pooling=true";
SqlConnection objConn = new SqlConnection(sConnectionString);
objConn.Open();
string query = "SELECT * FROM store_adj_note_detail_1";
SqlDataAdapter dAdapter = new SqlDataAdapter(query,objConn);
//dAdapter.SelectCommand= new SqlCommand(query, objConn);
SqlCommandBuilder cBuilder = new SqlCommandBuilder(dAdapter);
DataTable dTable = new DataTable();
//fill the DataTable
dAdapter.Fill(dTable);
dataGridView1.DataSource = dTable;
dAdapter.Update(dTable);

如何通过数据网格制作数据库

 OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(dAdapter);

不见了。MSDN 说:

//Without the OleDbCommandBuilder this line would fail.
dAdapter.Update(dTable);

您缺少将数据网格视图绑定到数据表的内容。这里的诀窍是你需要一个 BindingSource。

在"//填充数据"行之前添加以下内容

BindingSource bindSrc = new BindingSource();

然后更改 datagridview 的数据源,并将源添加到绑定源,如下所示:

dataGridView1.DataSource = bindSrc;  
bindSrc.DataSource = dTable;
编辑:我

忘了提到一件小事:要更新,您现在必须参考作为绑定源的数据表Srouce,这就是我的做法:

dAdapter.Update((DataTable)bindSrc.DataSource);

可能只是通过常规更新(dTable)来实现的,但如果不是,这可能会修复它

所以这基本上是我自己用于表单的。建立连接后,连接将打开,并用来自store_adj_note_detail_1的数据填充我的 datagridview1。
请注意,我从不声明我的绑定源...我也不知道原因,但我尝试与其余的(全局)和本地声明它,两者都使代码中断:/

BindingSource 的声明发生在窗体的"设计"视图上 - 只需将其从窗体顶部的工具箱中拖动,它就会像 FileDialogs 和 Menustrips 一样显示一个图标。我个人只更改了 Name 属性,没有添加任何事件。

它应该为您提供打开连接、使用绑定源链接 datagridview 和数据表以及更新数据库所需的一切的概述。

通过编辑我自己的代码来获得此代码,这些代码用于访问数据库,但是SQL数据库似乎以完全相同的方式工作,只是使用不同的实体(sqlDataAdapter等而不是OleDb...)。

希望这对你有帮助!

public partial class FrmDatabaseConnection : Form
{
    // Connection, Adapter, DataTable, CommandBuilder, Bindingsource and command
    private SqlDataAdapter adap;
    private DataTable dataTable;
    private SqlCommandBuilder commandBuilder;
    private string sqlCommand = "SELECT * FROM store_adj_note_detail_1";
    private SqlConnection conDB = new SqlConnection();
    //To open connection and fill datagridview1
    private void establishConnection()
    {
        try
                {
                    conDB.ConnectionString = "Data Source=localhost;Initial Catalog=ScratchCardSystem2;Integrated Security=True;pooling=true";
                    conDB.Open();
                    // Set adapter, commandbuilder, datatable and bindingsource
                    adap = new SqlDataAdapter(sqlCommand, conDB.ConnectionString);
                    commandBuilder = new SqlCommandBuilder(adap);
                    bindSrc = new BindingSource();
                    dataTable = new DataTable();
                    // Fill it!
                    adap.Fill(dataTable);
                    dataGridView1.DataSource = bindSrc;
                    bindSrc.DataSource = dataTable;

                }
                catch (Exception ex)
                {
                    MessageBox.Show("Unable to Open database, " + ex.Message,);
                    conDB.Close();
                }
    }
    private bool saveToDatabase()
    {
        try
                {
                    adap.Update((DataTable)bindSrc.DataSource);
            }
        catch (Exception ex)
                {
                    MessageBox.Show("Unable to Update database, " + ex.Message);
                    return false;
                }
    }

}