我如果在SQL里面新建查询输入如下并执行:
insert into T_Stus select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="d:\test.xls";User ID=admin;password=;Extended properties=Excel 8.0')...[Sheet1$] 
是可以把 d:\test.xls 插入到 T_Stus 里面的但是在C#里面,我先有一个 OpenFileDialog 用来选中想插入的EXCEL文件
然后用 OpenFileDialog.FileName 来获取这个文件的路径
不过我总是不能通过cmd.commandtext="insert into T_Stus select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="OpenFileDialog.FileName";User ID=admin;password=;Extended properties=Excel 8.0')...[Sheet1$] " 因为里面的"有各种问题,所以不能完美实现上面那样的功能,希望得到解答!
(我试了各种方法好久,都不行不能让OpenFileDialog.FileName 在这段语句里完美现实成"d:\test.xls"这样的形式)

解决方案 »

  1.   

    cmd.commandtext="insert into T_Stus select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="+OpenFileDialog.FileName+";User ID=admin;password=;Extended properties=Excel 8.0')...[Sheet1$] " 
      

  2.   

    OpenFileDialog.FileName不能用引号括起来啊,sql有无法解析你的C#的代码,要 +OpenFileDialog.FileName+
      

  3.   

    OpenFileDialog.FileName是你c#代码中的变量,怎么能直接用引号括起来呢
    +OpenFileDialog.FileName+
      

  4.   

    去掉Data Source="OpenFileDialog.FileName"上的双引号就好了,因为OpenFileDialog.FileName是文件路径代表的是一个字符串的变量如果加上双引号,就代表了一个字符串的值为OpenFileDialog.FileName,并不能获取文件路径了。
      

  5.   

    谢谢各位了~感激不尽cmd.commandtext="insert into T_Stus select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="+OpenFileDialog.FileName+";User ID=admin;password=;Extended properties=Excel 8.0')...[Sheet1$] " 
    这个确实可以如果Data Source=OpenFileDialog.FileName或者是Data Source=+OpenFileDialog.FileName+
    会在cmd.ExecuteNonQuery()丢出这个exception:
    链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。
    无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。
    我还是想了解一下原因的~
      

  6.   

    OpenFileDialog.FileName这个一个变量的值。insert into T_Stus select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="d:\test.xls";User ID=admin;password=;Extended properties=Excel 8.0')...[Sheet1$]  红色标记的值就是OpenFileDialog.FileName的值。所以用+字符串连接符来连接变量值的两端其他部分。