如何将datagridview1中数据更新到数据库?
我用的是VB.net,在窗体中添加datagridview控件,下面有DataSet1,WorkingturnBindingSource,WorkingturnTable...
我用的是VB.net,在窗体中添加datagridview控件,下面有DataSet1,WorkingturnBindingSource,WorkingturnTableAdapter,运行能显示数据,运行能显示数据,但修改数据后,关闭窗体,再运行,又变回原来的数据,应该是改后的数据没有更新数据库,请问如何才能将新数据更新到数据库?
展开
2个回答
展开全部
这个我做的课程设计有用到,是断开连接环境到SQL数据。
private void 商店一_商品_Load(object sender, EventArgs e)
{
sqlConn = new SqlConnection("Data Source=ASUS-PC\\SQLEXPRESS;Initial Catalog=SUPERMARKET;Integrated Security=True;");
/SqlConnection连接到本地服务器ASUS-PC,数据库SUPERMARKET,使用windows身份验证
sqlDa = new SqlDataAdapter("SELECT * FROM dbo.商店一_商品", sqlConn);
//Sql适配器以从表dbo.商店一_商品选择所有列作为命令,绑定到SqlConnection
sqlDs = new DataSet();//为数据集分配内存
sqlDa.Fill(sqlDs, "dbo.商店一_商品");//适配器填充到数据集中的表"dbo.商店一_商品"
dataGridView1.DataSource = sqlDs.Tables["dbo.商店一_商品"];
//dataGridView1以数据集中的表"dbo.商店一_商品"作为其数据源
SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(sqlDa);
//然后用SqlCommandBuilder自动为SqlDataAdapter生成Insert、Update、Delete命令
}
点button1批量更新到数据库:
private void button1_Click_1(object sender, EventArgs e)
{
if (sqlDs.HasChanges())//如果数据集因我们对datagridview的操作发生改变
{
try//捕获异常
{
sqlDa.Update(sqlDs.Tables["dbo.商店一_商品"]);//以数据集的"dbo.商店一_商品"表更新数据库
sqlDs.Tables["dbo.商店一_商品"].AcceptChanges();//接受对数据的修改
MessageBox.Show("更新成功!", "操作结果", MessageBoxButtons.OK, MessageBoxIcon.Information);//弹出提示更新成功
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "更新失败!", MessageBoxButtons.OK, MessageBoxIcon.Error);
//出现异常提示更新失败
}
}
}
button2删除当前行:
private void button2_Click_1(object sender, EventArgs e)
{ //删除首先要定位到当前选中的记录
int delRowIndex = dataGridView1.CurrentRow.Index;
this.dataGridView1.Rows.RemoveAt(delRowIndex);
//然后调用button1更新数据库的方法
button1.PerformClick();
}
private void 商店一_商品_Load(object sender, EventArgs e)
{
sqlConn = new SqlConnection("Data Source=ASUS-PC\\SQLEXPRESS;Initial Catalog=SUPERMARKET;Integrated Security=True;");
/SqlConnection连接到本地服务器ASUS-PC,数据库SUPERMARKET,使用windows身份验证
sqlDa = new SqlDataAdapter("SELECT * FROM dbo.商店一_商品", sqlConn);
//Sql适配器以从表dbo.商店一_商品选择所有列作为命令,绑定到SqlConnection
sqlDs = new DataSet();//为数据集分配内存
sqlDa.Fill(sqlDs, "dbo.商店一_商品");//适配器填充到数据集中的表"dbo.商店一_商品"
dataGridView1.DataSource = sqlDs.Tables["dbo.商店一_商品"];
//dataGridView1以数据集中的表"dbo.商店一_商品"作为其数据源
SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(sqlDa);
//然后用SqlCommandBuilder自动为SqlDataAdapter生成Insert、Update、Delete命令
}
点button1批量更新到数据库:
private void button1_Click_1(object sender, EventArgs e)
{
if (sqlDs.HasChanges())//如果数据集因我们对datagridview的操作发生改变
{
try//捕获异常
{
sqlDa.Update(sqlDs.Tables["dbo.商店一_商品"]);//以数据集的"dbo.商店一_商品"表更新数据库
sqlDs.Tables["dbo.商店一_商品"].AcceptChanges();//接受对数据的修改
MessageBox.Show("更新成功!", "操作结果", MessageBoxButtons.OK, MessageBoxIcon.Information);//弹出提示更新成功
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "更新失败!", MessageBoxButtons.OK, MessageBoxIcon.Error);
//出现异常提示更新失败
}
}
}
button2删除当前行:
private void button2_Click_1(object sender, EventArgs e)
{ //删除首先要定位到当前选中的记录
int delRowIndex = dataGridView1.CurrentRow.Index;
this.dataGridView1.Rows.RemoveAt(delRowIndex);
//然后调用button1更新数据库的方法
button1.PerformClick();
}
展开全部
Dim conn As SqlConnection
Dim da As SqlDataAdapter
Dim str As String = "select * from [" + Label9.Text.Trim + "]" ' SQL语句,数据表名储存在table9.text中,可以修改为自己的数据库名,[]仅在数据库名为数字开头时需要,非数字开头,请去掉
Dim cmd As SqlCommand
conn = New SqlConnection(ConfigurationManager.ConnectionStrings("conn_Client").ConnectionString)
cmd = New SqlCommand(str, conn)
da = New SqlDataAdapter(cmd)
Dim dt As New DataTable
dt = DataGridView2.DataSource '将dt 这个datatable与datagridview关联起来,此处最为重要;
da.Fill(dt)
'下面二句,将数据更新到数据库中;sqlCommandBuilder 将创建insert语句,联合update将新数据写入到数据库;
Dim scb As New SqlCommandBuilder(da)
da.Update(dt)
'将datagridview中的数据刷新(从数据库中导出的最新数据)
Dim ssq As String = "select * from [" + Label9.Text.Trim + "]"
Dim ds1 As DataSet = New DataSet
ConApdapterFill(ConfigurationManager.ConnectionStrings("conn_Client").ConnectionString, ssq, ds1)
DataGridView2.DataSource = ds1.Tables(0)
DataGridView2.Refresh()
ds1 = Nothing
你可以参考一下。
我这上面的代码里面,使用了配置文件和模块,conapdapterfill是模块中的一个类;configurationmanager这些,只是把连接字符串储存到配置文件 中了,直接替换即可;
Dim da As SqlDataAdapter
Dim str As String = "select * from [" + Label9.Text.Trim + "]" ' SQL语句,数据表名储存在table9.text中,可以修改为自己的数据库名,[]仅在数据库名为数字开头时需要,非数字开头,请去掉
Dim cmd As SqlCommand
conn = New SqlConnection(ConfigurationManager.ConnectionStrings("conn_Client").ConnectionString)
cmd = New SqlCommand(str, conn)
da = New SqlDataAdapter(cmd)
Dim dt As New DataTable
dt = DataGridView2.DataSource '将dt 这个datatable与datagridview关联起来,此处最为重要;
da.Fill(dt)
'下面二句,将数据更新到数据库中;sqlCommandBuilder 将创建insert语句,联合update将新数据写入到数据库;
Dim scb As New SqlCommandBuilder(da)
da.Update(dt)
'将datagridview中的数据刷新(从数据库中导出的最新数据)
Dim ssq As String = "select * from [" + Label9.Text.Trim + "]"
Dim ds1 As DataSet = New DataSet
ConApdapterFill(ConfigurationManager.ConnectionStrings("conn_Client").ConnectionString, ssq, ds1)
DataGridView2.DataSource = ds1.Tables(0)
DataGridView2.Refresh()
ds1 = Nothing
你可以参考一下。
我这上面的代码里面,使用了配置文件和模块,conapdapterfill是模块中的一个类;configurationmanager这些,只是把连接字符串储存到配置文件 中了,直接替换即可;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |