有如下 student 表
学号  姓名  班级 语文 
2001  张三  101   75
2003  李四  102   81//创建datatableSqlDataAdapter adapter = new SqlDataAdapter("select * from student", connStr);SqlCommandBuilder commandBuilder = new SqlCommandBuilder(Adapter);
DataTable table = new DataTable();
Adapter.Fill(table); //删除 语文 字段
table.Columns.Remove(table.Columns[3]);//想把修改更新到数据库
SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter4);
Adapter.Update(table);但通过上面的代码,数据库并没有修改 
请教各位:如何才能把修改保存到数据库呢?

解决方案 »

  1.   

    有如下  student  表  
    学号    姓名    班级  语文    
    2001    张三    101      75  
    2003    李四    102      81  
     
    //创建datatable  
     
    SqlDataAdapter  Adapter  =  new  SqlDataAdapter("select  *  from  student",  connStr);  
     
    SqlCommandBuilder  commandBuilder  =  new  SqlCommandBuilder(Adapter);  
    DataTable  table  =  new  DataTable();  
    Adapter.Fill(table);  
     
     //删除  语文  字段  
    table.Columns.Remove(table.Columns[3]);  
     
    //想把修改更新到数据库  
    SqlCommandBuilder  builder  =  new  SqlCommandBuilder(Adapter);  
    Adapter.Update(table);  
     
    但通过上面的代码,数据库并没有修改    
    请教各位:如何才能把修改保存到数据库呢?  
      

  2.   

    你说的修改是把数据库中和table对应的列保持一致吗?(也删除掉吗?)
      

  3.   

    对, 我就是想通过datatable  把数据库表中的一列删除,
      

  4.   

    对DataTable的修改并不会一一对应到取出数据的数据库原表.更多的内容需要使用Sql语句去执行!
      

  5.   

    那就样通过SqlDataAdapter的Update方法是不行的,Update方法只会根据行状态来修改对应的数据库中的行数据,也就是只会更改数据,而不会更改表结构的.
      

  6.   

    SqlDataAdatper是用来更新数据不是结构
    列是不能通过这种修改的,而且数据库的设计一般结构是不应该在程序中来改变,
    你看是不是数据设计有什么问题,做一个修改
      

  7.   

    我修改一下问题,用sql语句来更新:
    有如下  student  表  
    学号    姓名    班级    语文   数学  英语 
    2001    张三    101      75     54    65
    2003    李四    102      81     75    87
     
    //创建datatable  
     
    SqlDataAdapter  Adapter  =  new  SqlDataAdapter("select  *  from  student",  connStr);  
     
    SqlCommandBuilder  commandBuilder  =  new  SqlCommandBuilder(Adapter);  
    DataTable  table  =  new  DataTable();  
    Adapter.Fill(table);  
    //删除科目字段 
    //列的总数
    int count=table.Columns.Count ;
    string str=new string();//将第4列之后的内容删除 (删除语文、数学、英语)//逐一删除 英语、数学、语文
       for (int i = count - 1; i >= 3; i--)
            {
                  str = table.Columns[i].Caption;              string queryString = "alter table student drop " + str;
                  SqlCommand command = new SqlCommand(queryString, conn);
                  command.Connection.Open();
                  command.ExecuteNonQuery();
                 
                }但出现错误: '英语' 不是约束。未能除去约束。请教如何才能实现这个列的删除?
      

  8.   

    最简单的,生成sql语句再执行。
      

  9.   

    循环datatable拼接sqlstring strSql="";
    如:for(int i=0;i<dt.rows.count;i++)
    {
      if(满足要更新的条件)
      {
         strSql+=" update 表 set 列=xx where pk=yy";
      }
    }
      

  10.   

    把生成的SQL语句放到数据库里执行一下看看.
    按提示,很可能你用的Caption属性并不是表中的实际列名.而且,如果"英语"列在前的话,可能后面的也根本不对.只是没有执行到那一列而已.