SqlConnection myConnection = new SqlConnection(@"连接字符串");
SqlDataAdapter myAdapter = new SqlDataAdapter("select * from Customer", myConnection);
SqlCommandBuilder mybuilder = new SqlCommandBuilder(myAdapter);
DataSet myDataset = new DataSet();
myAdapter.Fill(myDataset, "Customer");
myAdapter.UpdateCommand = mybulider.GetUpdateCommand(); //这句话是后加的,也无法更新
myAdapter.Update(myDataset, "Customer");
myDataset.Tables[0].AcceptChanges();
现在是在一个窗体的datagridveiw和数据库的表绑定,我在窗体的load事件里绑定的,窗体只有一个按钮,上面是这个按钮的click事件代码,怎么就不能更新呢?
数据库用的是.net2005自带的sql2005,就存放在本程序文件夹下,连接都正常,可就是更新不了,哪为高人能给解释一下
SqlDataAdapter myAdapter = new SqlDataAdapter("select * from Customer", myConnection);
SqlCommandBuilder mybuilder = new SqlCommandBuilder(myAdapter);
DataSet myDataset = new DataSet();
myAdapter.Fill(myDataset, "Customer");
myAdapter.UpdateCommand = mybulider.GetUpdateCommand(); //这句话是后加的,也无法更新
myAdapter.Update(myDataset, "Customer");
myDataset.Tables[0].AcceptChanges();
现在是在一个窗体的datagridveiw和数据库的表绑定,我在窗体的load事件里绑定的,窗体只有一个按钮,上面是这个按钮的click事件代码,怎么就不能更新呢?
数据库用的是.net2005自带的sql2005,就存放在本程序文件夹下,连接都正常,可就是更新不了,哪为高人能给解释一下
myAdapter.UpdateCommand = mybulider.GetUpdateCommand(); //这句话是后加的,也无法更新
myAdapter建立好后不是insert ,update 和delete command语句自动生成吗
要是自己在建立的话得怎么建啊mabaolin(hello),你在说什么呢啊,首先你语句逻辑就错误了啊,你说dataset更新,datagridview没更新,那意思就是得更新datagridview被,可是你怎么还dataset.refresh()啊,再说我都绑定了,对dataset操作不就等于对datagridview操作吗
核心就是SqlDataAdapter+SqlCommandBuilder+BindingSource...写了个简单的例子,测试通过:两个按钮,一个"加载",一个"更新",还有一个"DataGridView"using System.Data;
using System.Data.SqlClient;namespace DataGridViewUpdateToDataBase
{
public partial class Form1 : Form
{
private SqlDataAdapter sda = new SqlDataAdapter();
private BindingSource bs = new BindingSource();
public Form1()
{
InitializeComponent();
} //加载
private void btnLoad_Click(object sender, EventArgs e)
{
DataBind();
} //数据绑定
private void DataBind()
{
SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
sda = new SqlDataAdapter("select * from studentDetails", con);
SqlCommandBuilder buider = new SqlCommandBuilder(sda);
DataSet ds = new DataSet();
sda.Fill(ds, "student");
bs .DataSource =ds.Tables ["student"];
this.dataGridView1.DataSource = bs;
} //更新
private void btnUpdate_Click(object sender, EventArgs e)
{
sda.Update((DataTable)bs.DataSource);
}
}
}
好像以前做过这个
ls好像差一些东西
不差,这些足矣..
我的数据库不是sql server2000,是.net里的数据库引擎,sqlexpress2005
不过不管是什么,我的连接都正常啊
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=" +
Application.StartupPath + "\\Database.mdf;Integrated Security=True;User Instance=True");
这是连接字符串
这样的程序,即使在没装sql server2000上也可以用吧
同样的语句,我用sql server 2000就可以更新
肯定是sqlexpress2005有什么说头
myAdapter.Fill(myDataset, "Customer")
myAdapter.UpdateCommand.connection.close()
myAdapter.UpdateCommand.connection.open()
就可以了,也就是说执行sql用的连接断开一下!
vc.net中不清楚!
不妨去试试!