我用下面的语句向SQL2000中的数据表COURSE追加记录:
"insert into COURSE select COURSE_ID,COURSE_NAME from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="+str+";User ID=Admin;Password=;Extended properties=Excel 5.0')...Sheet1$";
运行后系统提示:"插入错误: 列名或所提供值的数目与表定义不匹配。"
然后我用"select * INTO NEW  from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="+str+";User ID=Admin;Password=;Extended properties=Excel 5.0')...Sheet1$";
新建一个表,果然字段属性变为
列名         数据类型  长度      允许空
COURSE_ID    nvarchar 255        是
COURSE_NAME  nvarchar 255        是
 COURSE_REMARK   nvarchar  255   是
而在原来的表COURSE的字段属性为
列名         数据类型  长度      允许空
COURSE_ID    varchar 20      否
COURSE_NAME  varchar 20      否
 COURSE_REMARK   varchar  255   是
请问高手们:
我如何才能正确的插入,而不会出错呢?????

解决方案 »

  1.   

    你的COURSE表中有3个字段,而在select COURSE_ID,COURSE_NAME from OpenDataSource....时只有COURSE_ID,COURSE_NAME 两列当然提供值的数目与表定义不匹配了.insert into COURSE(COURSE_ID,COURSE_NAME) select COURSE_ID,COURSE_NAME from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="+str+";User ID=Admin;Password=;Extended properties=Excel 5.0')...Sheet1$
    或者
    insert into COURSE select COURSE_ID,COURSE_NAME,null from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="+str+";User ID=Admin;Password=;Extended properties=Excel 5.0')...Sheet1$
      

  2.   

    1,字段设置先允许为空
    2,将excel 中的所有数据类型,日期类型的单元格前加'