将EXCEL中的数据读出来,能用GridView显示。但是怎么往数据库中写呢??INSERT语句怎么写??
这是BUTTON控件中的的代码
string fullfilename = FileUpload1.PostedFile.FileName.ToString(); string mystring = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '" + fullfilename  + "';Extended Properties=Excel 8.0";       OleDbConnection cnnxls = new OleDbConnection(mystring);       OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [Sheet1$]", cnnxls);       DataSet myDs = new DataSet();       myDa.Fill(myDs);       GridView1.DataSource = myDs.Tables[0];       GridView1.DataBind();//到这里都能实现
       SqlConnection con = DB.createDB();
       SqlCommand cmd = new SqlCommand();
       cmd.Connection = con;
       con.Open();
       cmd.CommandText = "insert into excel(UserName, UserPwd) values('" + myDs.Tables[0] + "','" + myDs.Tables[0] + "')";
       cmd.ExecuteNonQuery();
       con.Close();
       cnnxls.Close();

解决方案 »

  1.   

    myDs.Tables[0]这是一个内存表对象,怎么能插入
    myDs.Tables[0].Rows[0][0].ToString();
      

  2.   

    string fullfilename = FileUpload1.PostedFile.FileName.ToString(); string mystring = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '" + fullfilename + "';Extended Properties=Excel 8.0";  OleDbConnection cnnxls = new OleDbConnection(mystring);  OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [Sheet1$]", cnnxls);  DataSet myDs = new DataSet();  myDa.Fill(myDs);  GridView1.DataSource = myDs.Tables[0];  GridView1.DataBind();//到这里都能实现//以下红色的用你语句
    OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\\studentinfo.mdb");//用你的连接
                                    conn.Open();
    for (int i = 0; i <= myDs.Tables[0].Rows.Count - 1; i++)
       {//用你的插入语句string intostr = "insert into " + tabel_name + " ([enrollment_date],[name],[sex],[study_],[Private_],[class])values('" + myDataSet.Tables["0"].Rows[i][0].ToString() + "','"
                                                            + myDataSet.Tables["0"].Rows[i][1].ToString() + "','" + myDataSet.Tables["0"].Rows[i][2].ToString() + "','"
                                                            + myDataSet.Tables["0"].Rows[i][3].ToString() + "','" + myDataSet.Tables["0"].Rows[i][4].ToString() + "','" + myDataSet.Tables["0"].Rows[i][5].ToString() + "')";
                                            OleDbDataAdapter da = new OleDbDataAdapter(intostr, conn);
                                            OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
                                            DataSet ds = new DataSet();
                                            da.Fill(ds, tabel_name);
    conn.Close();
    }
      

  3.   

    我现在把代码改成了这样,为什么写入数据库的时候说在执行intostr时出错说未将对象引用设置到对象的实例
      string fullfilename = FileUpload1.PostedFile.FileName.ToString();        string mystring = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '" + fullfilename + "';Extended Properties=Excel 8.0";        OleDbConnection cnnxls = new OleDbConnection(mystring);        OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [Sheet1$]", cnnxls);        DataSet myDs = new DataSet();        myDa.Fill(myDs);        SqlConnection con = DB.createDB();
            con.Open();
            for (int i = 0; i <= myDs.Tables[0].Rows.Count - 1; i++)
            {
                string intostr = "insert into tb_Users(UserName,UserPwd,PassQuestion,PassSoultion,Email,Logo)values('" + myDs.Tables["0"].Rows[i][0].ToString() + "','" + myDs.Tables["0"].Rows[i][0].ToString() + "','"+null+"','"+null+"','"+null+"','"+null+ "')";
                SqlDataAdapter da = new SqlDataAdapter(intostr, con);
                SqlCommandBuilder cmd = new SqlCommandBuilder(da);
                DataSet ds = new DataSet();
                da.Fill(ds, "td_Users");
                con.Close();
            }
      

  4.   

    for(int i=0;i<myDs.Tables[0].Rows.Count;i++)
    {
     //将你代码中myDs.Tables[0] 改为 myDs.Tables[0].Rows[0][i]
     cmd.CommandText = "insert into excel(UserName, UserPwd) values('" + myDs.Tables[0][?].ToString() + "','" + myDs.Tables[0][?].ToString() + "')";
      cmd.ExecuteNonQuery();
    }
      

  5.   

    //在数据表中设置PassQuestion,PassSoultion,Email,Logo字段“允许空字符串”为“是”
    //插入数据时只插入两项UserName,UserPwd,如下:
    string intostr = "insert into tb_Users(UserName,UserPwd)values('" + myDs.Tables["0"].Rows[i][0].ToString() + "','" + myDs.Tables["0"].Rows[i][1].ToString() + "')";
      

  6.   

    那几项我本来就是设置的为空,但是我用你的代码,还是提示那个错??难道是我数据表中有个主键UserID是自动增加的,这不会影响吧???
      

  7.   

    主键不会影响,这个tb_Users后空格
    string intostr = "insert into tb_Users (UserName,UserPwd)values('" + myDs.Tables["0"].Rows[i][0].ToString() + "','" + myDs.Tables["0"].Rows[i][1].ToString() + "')";
      

  8.   

    asd