本人是名学生,不太懂代码上的问题,所以请XD们可以详解
datagridview 已经连上SQL2005中的其中一个数据库(自己建的)我已经设置了 datagridview 启动编辑,启动添加,
我想直接按button1 为添加数据 button2为删除数据 并且与数据同步
谢谢你们了
这是我的毕业设计
datagridview 已经连上SQL2005中的其中一个数据库(自己建的)我已经设置了 datagridview 启动编辑,启动添加,
我想直接按button1 为添加数据 button2为删除数据 并且与数据同步
谢谢你们了
这是我的毕业设计
(2)新增数据 先往数据库中增加数据,并返回自增ID,填充到当前行.
this.dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[0].Index);DataSet ds = new DataSet();
SqlDataAdapter sda;
private void btn1_Click(object sender, EventArgs e)
{
ds.Tables.Clear();
sda = new SqlDataAdapter("select * from Tb", conn);
sda.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0];
} private void btn2_Click(object sender, EventArgs e)
{
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.Update(ds);
this.dataGridView1.DataSource = ds.Tables[0];
}
http://topic.csdn.net/u/20090130/20/1c6708ce-db4e-495a-a21b-101fecb9596d.html
SqlConnection sqlConn;
SqlDataAdapter sqlDa;
DataSet sqlDs;
sqlConn = new SqlConnection("Data Source=.;Initial Catalog=jwinfo;Integrated Security=True;");然后,你要读取出某个表的记录绑定到DataGridView中,下面是绑定显示学生信息表记录:
sqlDa = new SqlDataAdapter("SELECT * FROM 学生信息", sqlConn); sqlDs = new DataSet();
sqlDa.Fill(sqlDs, "学生信息"); dataGridView1.DataSource = sqlDs.Tables["学生信息"];这样你就可以直接在DataGridView中编辑数据了,编辑后,点击一个按钮保存:
//更新
private void button1_Click(object sender, EventArgs e)
{
if (sqlDs.HasChanges())
{
try
{
sqlDa.Update(sqlDs);
sqlDs.AcceptChanges();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "更新失败!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
{
//删除首先要定位到当前选中的记录
int delRowIndex = dataGridView1.CurrentRow.Index;
this.dataGridView1.Rows.RemoveAt(delRowIndex); //然后调用保存按钮保存删除操作
button1.PerformClick();
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;namespace DataGridViewDemo
{
public partial class DataGridViewCustomPaint : Form
{
SqlConnection sqlConn;
SqlDataAdapter sqlDa;
DataSet sqlDs; public DataGridViewCustomPaint()
{
InitializeComponent();
} private void DataGridViewCustomPaint_Load(object sender, EventArgs e)
{ sqlConn = new SqlConnection("Data Source=.;Initial Catalog=jwinfo;Integrated Security=True;");
sqlDa = new SqlDataAdapter("SELECT * FROM 学生信息", sqlConn); sqlDs = new DataSet();
sqlDa.Fill(sqlDs, "学生信息");
dataGridView1.DataSource = sqlDs.Tables["学生信息"]; //然后用SqlCommandBuilder自动为SqlDataAdapter生成Insert、Update、Delete命令
SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(sqlDa);
} //更新
private void button1_Click(object sender, EventArgs e)
{
if (sqlDs.HasChanges())
{
try
{
sqlDa.Update(sqlDs.Tables["学生信息"]);
sqlDs.Tables["学生信息"].AcceptChanges();
MessageBox.Show("更新成功!", "操作结果",MessageBoxButtons.OK, MessageBoxIcon.Information );
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "更新失败!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
} //删除
private void button2_Click(object sender, EventArgs e)
{
//删除首先要定位到当前选中的记录
int delRowIndex = dataGridView1.CurrentRow.Index;
if (delRowIndex != -1)
this.dataGridView1.Rows.RemoveAt(delRowIndex); //然后调用保存按钮保存删除操作
button1.PerformClick();
}
}
}
数据集dataset,填充数据集dt.fill(ds)
我学C#的第一个上机题目
加油啊!LZ
非常感谢8楼对我们这些小白的帮助,但是我发现有个错误sqlDa.Update(sqlDs.Tables["学生信息"]);
sqlDs.Tables["学生信息"].AcceptChanges();两句应该互换位置,因为这样会引发违反并发性错误。比如在添加一行,再立刻删除这一行时,如果先update,就会发现内存里的dataset的这一行没有更新