我用VS2005 建了个窗体 2个button 1个datagridview 一个button是把EXCEL文件显示出来的 还一个button是要把查出来的EXCEL文件导入到
SQLSEVER2000 msdb数据库中,要插入的时候建立个表 不会弄呀 只能把EXCEL查询出来,如果在数据库中有表的话我也能插入进去。还有个问题就
是我的EXCEL导入数据库都是重复一次的。  
private void button1_Click(object sender, EventArgs e)
        {            string conn = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\che;Extended Properties=\"Excel 8.0;\"");
            string comm = ("select * from [Sheet1$]");
            OleDbDataAdapter adap = new OleDbDataAdapter(comm,conn);
            DataTable  ds = new DataTable();
            adap.Fill(ds);
            dataGridView1.DataSource = ds;
        }        private void button2_Click(object sender, EventArgs e)
        {   
            DataTable ds=new DataTable();
            string conn = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\che;Extended Properties=\"Excel 8.0;\"");
            string comm = ("select * from [Sheet1$]");
            OleDbDataAdapter adap = new OleDbDataAdapter(comm, conn);
            adap.Fill(ds);            SqlConnection sqlconn = new SqlConnection("user id=fdc;password=123456;Database =msdb;data source=127.0.0.1;Connect Timeout=30");
            SqlCommand sqlcomm = new SqlCommand();
            sqlconn.Open();
            
            for (int i = 0; i < ds.Rows.Count; i++)
            {
              string a = ds.Rows[i][0].ToString();
              string b = ds.Rows[i][1].ToString();
              string sql = "insert into xxx (stringa,stringb) values('" + a + "','" + b + "')";
              sqlcomm.CommandText = sql;
              sqlcomm.Connection = sqlconn;
             try
             {
                sqlcomm.ExecuteNonQuery();
                int intcon = sqlcomm.ExecuteNonQuery();
                if (intcon > 0)
                    MessageBox.Show("插入成功!");
             }
              catch (Exception ex)
              {
                   MessageBox.Show("插入失败!由于:" + ex.Message);
              } 如果要在EXCEL插入同时建新表 不是用数据库中的表怎么办? 望大哥们指点··· 分不多 不好意思呀!!

解决方案 »

  1.   


    ...
     SqlCommand sqlcomm = new SqlCommand(); 
                sqlconn.Open(); sqlcomm.CommandText = "create table aa (aa varchar(50)) ";//将表的语法传进去,这里只是例子,自己改改要加什么字段约束。
                sqlcomm.ExecuteNonQuery();for (int i = 0; i < ds.Rows.Count; i++) 
                { 
                  string a = ds.Rows[i][0].ToString(); 
                  string b = ds.Rows[i][1].ToString(); 
                  string sql = "insert into xxx (stringa,stringb) values('" + a + "','" + b + "')"; 
             
    .....   
      

  2.   

    不对呀 这样弄在SQL里面数据库里面还是查不出 aa 这个表, 还有个问题是 用这个循环数据库中的XXX表插入的数据是重复的
      

  3.   

    不回啊我试了一下
    在执行这一步后就建表了 sqlcomm.ExecuteNonQuery();重负是应为
        sqlcomm.ExecuteNonQuery(); --重负是应为这里执行插入
                    int intcon = sqlcomm.ExecuteNonQuery(); --这里又执行插入
                    if (intcon > 0) 
                        MessageBox.Show("插入成功!"); 
                } 
                  catch (Exception ex) 
                  { 
                      MessageBox.Show("插入失败!由于:" + ex.Message); 
                  } 
      

  4.   

    把dataset数据保存到excel
    public void CreateExcel(DataSet ds, string FileName)
        {
            HttpResponse resp;
            resp = Page.Response;
            resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
            string colHeaders = "", ls_item = "";
            //定义表对象与行对象,同时用DataSet对其值进行初始化
            DataTable dt = ds.Tables[0];
            DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
            int i = 0;
            int cl = dt.Columns.Count;
            //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
            for (i = 0; i < cl; i++)
            {
                if (i == (cl - 1))//最后一列,加n
                {
                    colHeaders += dt.Columns[i].Caption.ToString() + "\n";
                }
                else
                {
                    colHeaders += dt.Columns[i].Caption.ToString() + "\t";
                }
            }
            resp.Write(colHeaders);
            //向HTTP输出流中写入取得的数据信息
            //逐行处理数据 
            foreach (DataRow row in myRow)
            {
                //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据  
                for (i = 0; i < cl; i++)
                {
                    if (i == (cl - 1))//最后一列,加n
                    {
                        ls_item += row[i].ToString() + "\n";
                    }
                    else
                    {
                        ls_item += row[i].ToString() + "\t";
                    }
                }
                resp.Write(ls_item);
                ls_item = "";
            }
            resp.End();
        }
      

  5.   

    重复插入的问题解决了 就是多写了次sqlcomm.ExecuteNonQuery() - -# 不过插入的时候建新表还是没有解决呀
      

  6.   

    诚请一对一教师 待遇面谈
    小弟我兴趣浓厚 但基础不够 
    QQ:94445044
    TEL:13648055921
      

  7.   

    要求:精通VS2005 JS C#  成都一环、二环内(只为了方便讲解)