操作步骤:
成都创新互联是一家集网站建设,北镇企业网站建设,北镇品牌网站建设,网站定制,北镇网站建设报价,网络营销,网络优化,北镇网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1. 下载Foxpro的OLEDB驱动VFPOLEDBSetup.msi,安装,选择允许everyone运行。
2. 注册OLEDB驱动:
regsvr32 /s "C:\Program Files (x86)\Common Files\system\ole db\vfpoledb.dll"
3. 运行x86版PowerShell:
$ConnString = "Provider=vfpoledb.1;Data Source=c:\accounts.dbf;Collating Sequence=machine;" $Conn = new-object System.Data.OleDb.OleDbConnection($connString) $conn.open() $cmd = new-object System.Data.OleDb.OleDbCommand("select * from accounts", $Conn) $DataAdapter = new-object System.Data.OleDb.OleDbDataAdapter($cmd) $dataset = new-object System.Data.Dataset $DataAdapter.fill($dataset) $dataset.Tables[0]
坑列表:
从Foxpro驱动描述:
“The VFPODBC driver is no longer supported. We strongly recommend using the Visual FoxPro OLE DB provider as a replacement.”
ODBC驱动分为32位和64位。只有编译为32位的应用程序才能调用32位的ODBC驱动。
"A 32-bit app uses a 32-bit ODBC driver even when installed on 64-bit Windows. But on 64-bit systems, there are two views on ODBC - one is 64-bit, the other is 32-bit. It looks like you opened the default 64-bit view which doesn't show the 32-bit ODBC drivers. To solve this go to c:\windows, there you see a folder named SysWOW64. Here you find odbcad32.exe. After launching the exe you can add a new system dsn or user dsn for the required ODBC driver. Configure it as usual. All other ODBC drivers you have been missing will appear there."
安装了Visual Foxpro后,会安装32位ODBC驱动VFPODBC.DLL。
安装OLEDB驱动时要选择允许everyone运行。
要注册vfpoledb.dll。
OLEDB驱动的Provider为vfpoledb.1。
要在32位PowerShell下运行来调用该驱动。
后记:
尝试在32位PowerShell下操作ODBC驱动,失败。
$ConnString ="Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB='c:\foxpro\';Exclusive=No;Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;" $Connection = New-Object System.Data.Odbc.OdbcConnection $Connection.ConnectionString = $ConnString $Connection.Open() $Command = New-Object System.Data.Odbc.OdbcCommand $Command.Connection = $Connection $Command.CommandText = $Query $Reader = $Command.ExecuteReader() $Counter = $Reader.FieldCount while ($Reader.Read()) { $SQLObject = @{} for ($i = 0; $i -lt $Counter; $i++) { $SQLObject.Add( $Reader.GetName($i), $Reader.GetValue($i)); } $SQLObject } $Connection.Close() $Reader.Close()
但在32位操作系统上运行是正常。若其他语言在开发时应编译为32位版本。