我有两张表,A表和B表,两张表之间建了关系,我想同时为两张表插入数据,我的数据是从excel中导入进来的,一个excel表中包含了两个表的字段,但是现在不知道用什么方法来做,请高手指教

解决方案 »

  1.   

    我想到的就是只能寫兩條insert語句insert into A (file1,file2...) values(value1,value2);
    insert into B (file1,file2...) values(value1,value2);看樓下更好的方法!
      

  2.   

    只能从EXCEL中取出数据,将数据按某种规律剥离后再插入表中
      

  3.   

    这个比较好处理.
    1.先从excel中取出数据,如下:
    public DataSet GetDataFrowExcel( )
            {            OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Filter = "Excel files(*.xls)|*.xls";
                DataSet dataSet = new DataSet();
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    OleDbConnection oleDbConn = null;
                    OleDbDataAdapter oleAdapter = null;
                    try
                    {
                        FileInfo fileInfo = new FileInfo(openFileDialog.FileName);
                        string filePath = fileInfo.FullName;
                        string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0";                    oleDbConn = new OleDbConnection(connExcel);
                        oleDbConn.Open();                    //获取excel表
                        DataTable dataTable = oleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);                    //获取sheet名,其中[0][1]...[N]: 按名称排列的表单元素
                        string tableName = dataTable.Rows[0][2].ToString().Trim();
                        tableName = "[" + tableName.Replace("'", "") + "]";                    //利用SQL语句从Excel文件里获取数据
                        string selStr = "select excel列1,excel列2 from "+ tableName";                    oleAdapter = new OleDbDataAdapter(selStr, connExcel);                    oleAdapter.Fill(dataSet);
                        oleDbConn.Close();
                        oleDbConn.Dispose();
                        oleAdapter.Dispose();
                    }                catch
                    {
                        oleDbConn.Close();
                        oleDbConn.Dispose();
                        oleAdapter.Dispose();
                        MessageBox.Show("获取数据出错,请确定选择的文件是否正确");
                        dataSet = null;
                    }
                }
                else
                {
                    dataSet = null;
                }
                return dataSet;
            }2. 循环取出来的dataset.
       privite void InsetTable()
       {
          DataSet ds = GetDataFrowExcel( );
          for(int i=0;i<ds.Tables[0].Rows.Count;i++)
          {
              DataRow[] row = ds.Tables[i].Select("列名='"+Row["主键列"]+"'")
              string sql1= "inset 主表 (主键)values('Row["主键列"]+"')";//插入主表数据
              for(int k=0;k<row.Lenght;k++)
               {
                  string sql1= "inset 从表 (从表主键,与主表关联键)values('主键值''Row["主键列"]+"')";//插入从数据
               }
              //执行sql就行.
          }
       }
      

  4.   

    SELECT * INTO 表名 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database='excel文件路经', [sheet名$])
    这样就可以操作SQL表了。