我在开发中遇到两个问题,希望大家帮帮忙。
1.怎么把数据库中的表取出来放到DataTable中?
2.怎么更新DataTable里面的一个字段值,然后再存入数据库中?可能说得有点不太清晰,是这样的:
假设有个表TableA,里面的字段是
ID int,
KeyName varchar(50),
KeyValue varchar(100),
UpdateTime smalldatetime从TableA中取出所有记录,把记录放到DataTable中。
然后,修改其中的KeyValue和UpdateTime的值,再把数据存入到数据库中。新手学习,想了半天也想不出怎么做?

解决方案 »

  1.   

    你不就是想更新下数据库么,为什么一定要丢到datatable里面?直接用gridview写编辑代码啊,不想手动写 可以用它自带的编辑功能啊
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  2.   

    你不就是想更新下数据库么,为什么一定要丢到datatable里面?直接用gridview写编辑代码啊,不想手动写 可以用它自带的编辑功能啊
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  3.   


    INSERT INTO DataTable(ID,KeyName,KeyVALUE,UpdateTime)
    SELECT ID,KeyName,KeyValue,UpdateTime FROM TableAUPDATE DataTable SEt KeyName=更新数据,UpdateTime=更新数据 FROM DataTable WHERE 条件--如果是插入到另一个数据库中可以建立临时表了插入不知道是不是这样的.
      

  4.   

    你不就是想更新下数据库么,为什么一定要丢到datatable里面?直接用gridview写编辑代码啊,不想手动写 可以用它自带的编辑功能啊
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  5.   

    应该是用SqlDataAdapter填充DataSet,然后再通过SqlDataAdapter批量更新到数据库,没用过,在google上百度一下吧
      

  6.   

    这是C#里面的,我好像发错了。但还是解释一下,我这样用的原因。
    用DataTable是因为我想写一个方法,这个方法返回DataTable,
    再把这个DataTable传到界面层,这样界面层的管理类就可以用到它。
    界面层上有很多控件,如文本框和下拉框等。用控件一个一个绑定有
    点繁琐,所以我把界面层写成一个类,每个控件就是一个属性。
    然后界面层用传过来DataTable就可以比较方便的赋值了。
    不知道,我说的清不清楚。还望海涵。
    我现在就是不太知道怎么用DataTable?
    如果有谁有这方面的资料或链接路径也可以告诉我,我去查查。
      

  7.   

    using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("server=ip;uid=sa;pwd=密码;database=数据库"))
                {
                    using (System.Data.SqlClient.SqlCommand command = conn.CreateCommand())
                    {
                        command.CommandText = "select ...";
                        using (System.Data.SqlClient.SqlDataAdapter adp = new System.Data.SqlClient.SqlDataAdapter(command))
                        {
                            System.Data.DataTable dt = new System.Data.DataTable();
                            adp.Fill(dt);
                        }
                    }
                }dt就是你要的
      

  8.   

    哦,原来是这样的。
    那怎么修改呢,然后更新到数据库?
    是不是入库用DataTable特别不好弄,比如说代码的编写和运行效率及迸发操作的异常问题容易出现?
      

  9.   

    顶楼上的人
    using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("server=ip;uid=sa;pwd=密码;database=数据库"))
                {
                    using (System.Data.SqlClient.SqlCommand command = conn.CreateCommand())
                    {
                        command.CommandText = "select ...";
                        using (System.Data.SqlClient.SqlDataAdapter adp = new System.Data.SqlClient.SqlDataAdapter(command))
                        {
                            System.Data.DataTable dt = new System.Data.DataTable();
                            adp.Fill(dt);
                        }
                    }
                }
    然后,
    你可以利用DataColumn取出你要修改的列,然后利用DataRow之中的方法修改,最后重新组成DataTable返回!
    在数据库之中先写一个修改表的存储过程,在C#之中用:写一个方法,参数是修改后的DataTable,大概语句如下:
    using(SqlConnection conn = new SqlConnection("server=ip;uid=sa;pwd=密码;database=数据库"))
    {
       conn.Open();
       using (Sqlcommand cmd = new Sqlcommand ('存储过程名',conn))
       {
           cmd.CommandType = CommandType.StoredRange;
           然后利用对应的参数传递值
       }
       conn.Close();
    }
      

  10.   

    ado.net最基本的知识。建议楼主找ado.net的资料先看看。
    看msdn也可以。
      

  11.   

    好象与DELPHI中的数据集类似?
      

  12.   

    放到dataset,datatable或者dataview中都可以,直接填充到里面
      

  13.   


    //从title表中取数据放在datatable中
    SqlConnection conn=new SqlConnection("server=.;database=pubs;uid=sa;pwd=sa"); 
    SqlCommand cmd=new SqlCommand("select * from titles",conn);
    SqlDataAdapter da=new SqlDataAdapter(cmd);
    dataset ds=new DataSet();
    da.Fill(ds,"titles");//修改datatable中第一行title字段的数据为“s”,并提交数据库更改。
    ds.Tables[0].Rows[0]["title"]="s";
    da.Update(ds,"titles");
    ds.AcceptChanges(); 
      

  14.   


    数据量大的话,建议使用SQLBulkCopy类:
    1)将数据库数据取道datatable中
    2)对datatable进行变更
    3)使用SQLBulkCopy批量导入,10万条大概20秒
      

  15.   

    SQLBulkCopy批量导入6万条数据不到5秒
      

  16.   

    string mSql = "select ID,KeyName,KeyValue,UpdateTime from TableA ";//连接数据库
    string SqlConn = "data source=服务名;initial catalog=数据库名;user id=登陆名;password=密码";
    SqlConnection _conn = new SqlConnection(SqlConn);
    _conn.Open();//查询后存入DataTable 
    DataTable dt = new DataTable("result");
    SqlCommand mySqlDataSetCmd = new SqlCommand(mSql, _conn);
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = mySqlDataSetCmd;
    adapter.Fill(dt);//返回DataTable 
    if (dt.Rows.Count == 0)
    {
        return null;
    }
    else
    {
        return dt;
    }
      

  17.   


    //更新记录
    SqlCommand updateCmd = new SqlCommand("update TableA set KeyValue = @KeyValue" + "where KeyName='" + 变量 + "'", _conn);
    adapter.UpdateCommand = updateCmd;
    adapter.UpdateCommand.Parameters.Add("@KeyValue", SqlDbType.NVarChar, 2, "KeyValue");
    dt.Rows[0][2] = 新的值;
    adapter.Update(dt);
      

  18.   


    public DataTable getDataTable(String strSql)//strSql为查询用的SQL语句,自己写
    {
       System.Data.DataTable dt=null;
       using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(
              "server=ip;uid=sa;pwd=密码;database=数据库"))
            {
                    using (System.Data.SqlClient.SqlCommand command = conn.CreateCommand())
                    {
                        command.CommandText =strSql;
                        using (System.Data.SqlClient.SqlDataAdapter adp = new   
                                          System.Data.SqlClient.SqlDataAdapter(command))
                        {
                            dt= new System.Data.DataTable();
                            adp.Fill(dt);
                        }
                    }
             }
             return dt; 
    }public bool updateTable(String updateSql)
    {
       SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=;database=数据库名");
       SqlCommand cmd=new SqlCommand(updateSql,conn);
       conn.open();
       int result=cmd.executeNonequery();
       if(result>0)
          return true;
       else
          return false;
    }