所以这基本上是我用于我自己的表单的。在建立连接时,连接打开,它用来自 store_adj_note_detail_1 的数据填充了我的 datagridview1。
请注意,我从未声明我的 bindingSource ......我也不知道原因,但我尝试与其他人(全局)和本地声明它,两者都使代码中断:/
BindingSource 的声明发生在表单的设计视图中 - 只需将其从表单顶部的工具箱中拖动,它就会显示为 FileDialogs 和 Menustrips 之类的图标。我个人只更改了 Name 属性,并没有添加任何事件。
它应该为您提供打开连接所需的一切概览,使用 bindingsource 链接您的 datagridview 和您的 dataTable,并更新您的数据库。
我通过编辑用于访问数据库的自己的代码获得了此代码,但 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;
}
}
}