DataSet ds = new DataSet(); 
全局变量试试!!

解决方案 »

  1.   

    SqlDataAdapter sda;
    public DataSet GetTable() 
    {
        SqlConnection cn = new SqlConnection(@"Data Source=B7RFYV0VR5W8IW6;Initial Catalog=book1;Integrated Security=True");
        SqlCommand cmd = new SqlCommand(); 
        cmd.CommandText = @"SELECT ID, ISBN, Name AS 书名, Author AS 作者, Press AS 出版社," + " PublishDate AS 出版日期, Price AS 定价, Pages AS 页数, Barcode AS 条码, CD AS 光盘,"+ "Storage AS 库存量 FROM [book1].[dbo].[Book]"; 
        cmd.Connection = cn; 
        sda = new SqlDataAdapter(); 
        SqlCommandBuilder bu = new SqlCommandBuilder(sda);
        sda.SelectCommand = cmd; 
        DataSet ds = new DataSet(); 
        cn.Open();//一般连接的打开和关闭最好在一个方法里
        sda.Fill(ds,"Book"); 
        cn.Close(); 
        return ds; 
    } public void OtherMethod()
    {
        SqlConnection cn = new SqlConnection(@"Data Source=B7RFYV0VR5W8IW6;Initial Catalog=book1;Integrated Security=True");
        cn.Open();
        //this.dataGridView1.host();
        //要用前面的DataAdapter对象来更新现在的ds
        sda.Update(ds, "Book");
        cn.Close();
        //this.dd(); 
    }
      

  2.   

    楼主在更新数据的代码部分重新实例了DataSet ds,那么在新的ds对象里Book表自然是空的,所以会提示你"Update无法找到TableMapping['Book']或DataTable"Book" ".解决办法,在显示数据代码部分定义的ds,让起可见范围达到你的更新数据的代码块.显示和更新数据的DataSet必须是同一个DataSet.
      

  3.   

    通过DataAdapter更新数据,请参考下面的代码:SqlDataAdapter adapter;//声明一个全局的Adapter和DataSet
            DataSet ds;
            private void Form1_Load(object sender, EventArgs e)
            {
                string strSql = "select * from Table1";            SqlConnection con = new SqlConnection("server=DBServer;user id=sa;password=sa;database=dbTest");            adapter = new SqlDataAdapter(strSql, con);            SqlCommandBuilder cb = new SqlCommandBuilder(adapter);//通过该语句生成相应的(insert into/update/delete Sql)            ds = new DataSet();            adapter.Fill(ds);//填充DataSet            dataGridView1.DataSource = ds.Tables[0];//绑定
            }private void button1_Click(object sender, EventArgs e)
            {
                //由于DataGridView已与DataSet绑定,对DataGridView的更改(添加/删除/更新)亦会自动改变DataSet            //更新回数据库
                adapter.Update(ds);            MessageBox.Show("数据更新成功!");
            }
      

  4.   


    SqlDataAdapter sda = new SqlDataAdapter("SELECT ID, ISBN, Name, Author, Press,PublishDate,Price,Pages,Barcode, CD,Storage FROM [book1].[dbo].[Book]",cn); 
      

  5.   

    你断点跟踪一下update之前ds里面都有什么
      

  6.   


    SqlConnection cn = new  SqlConnection(@"Data Source=B7RFYV0VR5W8IW6;Initial Catalog=book1;Integrated Security=True"); 
                cmd.Connection = cn; 
                this.dataGridView1.host(); 
                SqlDataAdapter sda = new SqlDataAdapter(); 
                //sda. = cmd; 
                DataSet ds = new DataSet(); 
                //sda.Fill(ds, "Book"); 
                SqlCommandBuilder bu = new SqlCommandBuilder(sda);            
                sda.Update(ds,"Book"); 
                //this.dataGridView1.DataSource = ds.Tables["Book"]; 
                ////this.dataGridView1.Columns["ID"].Visible = false; 
                
                //sda.Update(ds,"Book"); 
                cn.Close(); 
              //db.InsertTable(insert); 
                this.dd(); 
    老兄 你这里面的ds可不是你Fill的那个哦
      

  7.   


    SqlConnection cn = new  SqlConnection(@"Data Source=B7RFYV0VR5W8IW6;Initial Catalog=book1;Integrated Security=True"); 
                cmd.Connection = cn; 
                this.dataGridView1.host(); 
                SqlDataAdapter sda = new SqlDataAdapter(); 
                //sda. = cmd; 
                ////DataSet ds = new DataSet(); 你这个ds是一个新的DataSet而非你原来的 你怎么能在这里面更新的说
                DataSet ds = GetTable();/////改成这样
                //sda.Fill(ds, "Book"); 
                SqlCommandBuilder bu = new SqlCommandBuilder(sda);            
                sda.Update(ds,"Book"); 
                //this.dataGridView1.DataSource = ds.Tables["Book"]; 
                ////this.dataGridView1.Columns["ID"].Visible = false; 
                
                //sda.Update(ds,"Book"); 
                cn.Close(); 
              //db.InsertTable(insert); 
                this.dd(); 
      

  8.   

    this.dataGridView1.host() 这个的作用是什么?2005里好像没有host()