这么大个题目啊
按照.net的设计思想,gridview与内存中DataTable或DataSet对应,再用个数据访问的DataAdaptor联系DataSet和数据库
GridView有变化时,使用DataAdaptor的update就可以将DataSet中的变化更新到数据库这只是简单的说下理论哈,这里头还是大有藏掖的,需要慢慢去体会
按照.net的设计思想,gridview与内存中DataTable或DataSet对应,再用个数据访问的DataAdaptor联系DataSet和数据库
GridView有变化时,使用DataAdaptor的update就可以将DataSet中的变化更新到数据库这只是简单的说下理论哈,这里头还是大有藏掖的,需要慢慢去体会
{
int num = -1;
try
{
OleDbDataAdapter adapter = new OleDbDataAdapter(string.Format(" SELECT * FROM {0} ", tableName), this.connection);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
if (this.transaction != null)
{
if (adapter.SelectCommand != null)
{
adapter.SelectCommand.Transaction = this.transaction;
}
if (adapter.InsertCommand != null)
{
adapter.InsertCommand.Transaction = this.transaction;
}
if (adapter.UpdateCommand != null)
{
adapter.UpdateCommand.Transaction = this.transaction;
}
if (adapter.DeleteCommand != null)
{
adapter.DeleteCommand.Transaction = this.transaction;
}
}
adapter.Update(dataSet, tableName);
num = 1;
}
catch (Exception)
{
throw;
}
return num;
}
public partial class Form1 : Form
{
Form1数据成员#region Form1数据成员
private DataTable DT = new DataTable();
private SqlDataAdapter SDA = new SqlDataAdapter();
#endregionForm1构造函数#region Form1构造函数
public Form1()
{
InitializeComponent();
}
#endregion连接数据库显示数据#region 连接数据库显示数据
private void Form1_Load(object sender, EventArgs e)
{ SqlConnection conn = new SqlConnection("server=127.0.0.1;database=pubs;uid=sa");
SqlCommand SCD = new SqlCommand("select * from tables", conn);
SDA.SelectCommand = SCD;
SDA.Fill(DT);
dataGridView1.DataSource = DT;
}
#endregion使用Update更新数据库#region 使用Update更新数据库
private void toolStripButton1_Click(object sender, EventArgs e)
{
try
{
SqlCommandBuilder SCB = new SqlCommandBuilder(SDA);
SDA.Update(DT);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
MessageBox.Show("更新成功!");
}
#endregion
{
string sqlComString = "select * from [User] ";
string sqlConString = "server=localhost;database=workflowDB;uid=sa;pwd=;";
SqlConnection sqlConnect ;
SqlCommand selectCommand ;
SqlDataAdapter da=new SqlDataAdapter ();
DataSet dataset=new DataSet ();
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
try
{
sqlConnect = new SqlConnection(sqlConString);
selectCommand = new SqlCommand(sqlComString);
selectCommand.Connection = sqlConnect;
da.SelectCommand = selectCommand;
da.Fill(dataset, "user");
BindingSource bindingsource = new BindingSource();
dataGrid.DataSource = bindingsource;
bindingsource.DataSource = dataset.Tables[0];
dataGrid.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
}
catch (SqlException g) { MessageBox.Show(g.ToString()); }
} private void button1_Click(object sender, EventArgs e)
{
try
{
SqlCommandBuilder cm = new SqlCommandBuilder(da);
da.Update(dataset,"user");
}
catch (SqlException s){ MessageBox.Show(s.ToString()); }
}
}
比如假如你的表没主键或者结构非常复杂等等问题就会出现这个。
BindingSource bindingsource = new BindingSource();
dataGrid.DataSource = bindingsource;
bindingsource.DataSource = dataset.Tables[0];
改成dataGrid.DataSource = dataset.Tables[0];另外检查一下USER表是否设置有主键``
跟踪一下dataset 看tables[0]是否为空