已经定义的一张表ds,并且ds里面已经有数据了,现在我想把这内存表中的数据查询出来插入到工资表2019中,如下
insert into 工资表2019 select * from "+ds.Tables[0]
执行后报错,“对象名 'Sheet1' 无效。”
请问怎么回事,用这种方法进行查询、插入到数据库中的表可以吗?

解决方案 »

  1.   

    insert into 工资表2019(a,b,c) value ('','','')  //abc是列名這樣子的吧
      

  2.   

    ????select  into 才是正常写法,你可以百度“select into”有更详细的解释
      

  3.   


    instert into的标准型是Insert into Table2(field1,field2,...) select value1,value2,... from Table1
      

  4.   

    你的想法很不错,可惜语法不支持
    不过你可以这样写
     public int SqlCopySource(string connString, DataTable table, string name)
            {
                SqlConnection conn = new SqlConnection(connString);
                conn.Open();
                using (SqlBulkCopy bulk = new SqlBulkCopy(conn))
                {
                    bulk.BatchSize = table.Rows.Count;
                    bulk.DestinationTableName = name;
                    try
                    {
                        bulk.WriteToServer(table);
                        return 1;
                    }
                    catch
                    {
                        return -1;
                    }
                    finally
                    {
                        bulk.Close();
                        conn.Close();
                        conn.Dispose();
                    }
                }
            }
      

  5.   

    不过以上都是sql语句,而你说“内存表”,已经脱离sql范畴了只能说一个dt 数据复制到另一个dt,然后在dt构造插入,更新语句,saveso,如果是内存表datatble,不具备条件。要么循环一条一条插入,要么利用
     DataTable inserts = table.GetChanges(DataRowState.Added);
    adapter.Update(inserts);整体更新话说,adapter适配器用的比较少了,一般ORM代劳了
      

  6.   

    内存表,是datatable吗,dt.Rows[i].Cell[j]