cs代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.OracleClient;
using System.Data.OleDb;public partial class _Default : System.Web.UI.Page 
{
     public  DataSet ds;
   protected void  Page_Load(object sender, EventArgs e)
    {
        ds = (DataSet)this.GridView1.DataSource;
        //Session["ds "] = GridView1.DataSource;
       // ds = (DataSet)Session["GridView1"];
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        
        OracleConnection conn = new OracleConnection("Data source = xxxx; User Id=xxxx; Password=xxxx;");
         if (conn.State.ToString() == "Closed")
         {
             conn.Open();         }         for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
         {
             string danwei = ds.Tables[0].Rows[i][0].ToString();
             string chexing = ds.Tables[0].Rows[i][1].ToString();
             string chehao = ds.Tables[0].Rows[i][2].ToString();
             string jiashiyuan = ds.Tables[0].Rows[i][3].ToString();
             string bqqk = ds.Tables[0].Rows[i][4].ToString();
             string sql = "insert into tcddbqb([danwei],[chexing],[chehao],[jiashiyuan],[bqqk]) values('" + danwei + "','" + chexing + "','" + chehao + "','" + jiashiyuan + "','" + bqqk + "')";
             OracleCommand cmd = new OracleCommand(sql, conn);
             try
             {
                 cmd.ExecuteNonQuery();
             }
             catch (Exception ex)
             {
                 Response.Write("插入失败!由于:" + ex.Message);
             }
         }
         conn.Close();
         Response.Write("<SCRIPT>alert('数据已成功导入到数据库!');</SCRIPT>");
    }
}
我想把gridview的内容放入dataset中,然后再写入数据库,但是在for (int i = 0; i < ds.Tables[0].Rows.Count; i++)的时候报错,说明内容没有写入到dataset 的ds中。请问应该如何更改,还是有更好的方法,请把代码给出来,不胜感激~!

解决方案 »

  1.   

    this.GridView1.DataSource 是什么?dataset吗?你的思路好像不对。你应该借助 SqlDataAdapter 来更新。
      

  2.   

    我想要的不是更新而是写入数据库,GridView1.DataSource不是GridView1的数据集吗?我是通过控件把数据在gridview里显示出来的,然后通过gridview修改后再把数据插入到另一个表里
      

  3.   

    ds = (DataSet)this.GridView1.DataSource;为什么这样写  
    不就是把GridView的数据存入数据库吗?干么还非得用DataSet    直接遍历GridView就是了
      

  4.   

    说真的,没见过这么获得数据源(ds = (DataSet)this.GridView1.DataSource;
    ),一般的作法是获得一个DataSet,然后GridView再绑定数据源(这里就是GridView的显示)
    ,如果真有你这样的作法,你可以调试看下(DataSet)this.GridView1.DataSource这个有没有值的,再就是出的错又是什么错来的,这也是一个问题
      

  5.   

    主要是ds没有值,我是通过sqldataqsource控件绑定数据显示在gridview里的,然后再把gridview的数据写入到oracle的另一个表中。我上面的代码不能实现,只求一个能实现的代码
      

  6.   

    你可以直接循环dgv,然后一条条加入数据库,
    ds = (DataSet)this.GridView1.DataSource;
    可改为DataTable dt=this.GridView1.DataSource;
    DataSet ds=new DataSet();
    ds.Add(dt);
      

  7.   

    如何把gridview的数据存入数据库中?
      

  8.   

    其实你已经写好了,只是你没有发现而已只需要改一下for循环
     for (int i = 0; i < GridView1.Rows.Count; i++)
              {
                  string danwei = GridView1.Rows[i][0].ToString();
                  string chexing = GridView1.Rows[i][1].ToString();
                  string chehao = GridView1.Rows[i][2].ToString();
                  string jiashiyuan = GridView1.Rows[i][3].ToString();
                  string bqqk = GridView1.Rows[i][4].ToString();
                  string sql = "insert into tcddbqb([danwei],[chexing],[chehao],[jiashiyuan],[bqqk]) values('" + danwei + "','" + chexing + "','" + chehao + "','" + jiashiyuan + "','" + bqqk + "')";//像这种东西用string.Format("")比较好
                  OracleCommand cmd = new OracleCommand(sql, conn);
                  try
                  {
                      cmd.ExecuteNonQuery();
                  }
                  catch (Exception ex)
                  {
                      Response.Write("插入失败!由于:" + ex.Message);
                  }
              }
              conn.Close();
              Response.Write("<SCRIPT>alert('数据已成功导入到数据库!');</SCRIPT>");
         }
      

  9.   

    其实你已经写好了,只是你没有发现而已上面那个不算
     for (int i = 0; i < GridView1.Rows.Count; i++)
              {
                  string danwei = GridView1.Rows[i].Cell[0].Text.Trim();
                  string chexing = GridView1.Rows[i].Cell[1].Text.trim;
                  string chehao = GridView1.Rows[i].Cell[2].Text.Trim();
                  string jiashiyuan = GridView1.Rows[i].Cell[3].Text.Trim();
                  string bqqk = GridView1.Rows[i].Cell[4].Text.Trim();
                  string sql = "insert into tcddbqb([danwei],[chexing],[chehao],[jiashiyuan],[bqqk]) values('" + danwei + "','" + chexing + "','" + chehao + "','" + jiashiyuan + "','" + bqqk + "')";//像这种东西用string.Format("")比较好
                  OracleCommand cmd = new OracleCommand(sql, conn);
                  try
                  {
                      cmd.ExecuteNonQuery();
                  }
                  catch (Exception ex)
                  {
                      Response.Write("插入失败!由于:" + ex.Message);
                  }
              }
              conn.Close();
              Response.Write("<SCRIPT>alert('数据已成功导入到数据库!');</SCRIPT>");
         }