일부 FoxPro 테이블 중 하나에 BLOB 필드가 있습니다. Blob (MapPoint 파일) 내에 저장된 데이터 형식을 알고 있지만 FoxPro를 가지고 있지 않기 때문에 압축을 풀지 않습니다. 쉽게 얻을 수 없습니다.FoxPro 테이블에서 BLOB로 저장된 파일을 추출하는 방법은 무엇입니까?
.DBF 및 .FPT 파일을 가져 와서 안에 저장된 MapPoint 파일의 압축을 푸는 방법이 있습니까?
일부 FoxPro 테이블 중 하나에 BLOB 필드가 있습니다. Blob (MapPoint 파일) 내에 저장된 데이터 형식을 알고 있지만 FoxPro를 가지고 있지 않기 때문에 압축을 풀지 않습니다. 쉽게 얻을 수 없습니다.FoxPro 테이블에서 BLOB로 저장된 파일을 추출하는 방법은 무엇입니까?
.DBF 및 .FPT 파일을 가져 와서 안에 저장된 MapPoint 파일의 압축을 푸는 방법이 있습니까?
C# 및 ADO.NET을 사용하여 데이터를 파일로 추출 할 수 있습니다. 당신이 FoxPro에 드라이버를 필요로하는 경우
using System;
using System.Data;
using System.Data.OleDb;
using System.IO;
namespace SaveFoxProMemoFieldAsFile
{
class Program
{
static void Main(string[] args)
{
string connectionString = @"Provider=VFPOLEDB.1;Data Source=C:\data\;Collating Sequence=MACHINE;Null=Yes";
string sqlSelect = "SELECT filedata FROM filelist";
int fileNumber = 1;
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
using(OleDbCommand command = connection.CreateCommand())
{
command.CommandText = sqlSelect;
command.CommandType = CommandType.Text;
try
{
connection.Open();
using(OleDbDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
if(reader.HasRows)
{
while(reader.Read())
{
byte[] binaryData = (byte[])reader["filedata"];
FileStream fs = new FileStream(string.Format(@"C:\data\file_{0}.pdf", fileNumber++), FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(binaryData, 0, binaryData.Length);
fs.Close();
}
}
}
}
catch
{
throw;
}
}
}
Console.WriteLine("Program execution complete");
Console.WriteLine("Press any key to end");
Console.ReadKey();
}
}
}
방문 Microsoft OLE DB Provider for Visual FoxPro 9.0 : 여기에 몇 가지 예제 코드입니다.
이 이전 링크는 연결하는 방법을 보여줍니다. to VFP from C#. 이 대답은 실제로 DaveB의 대답과 비슷한 OleDbProvider와의 연결을 보여줍니다. 그러나 VFP는 SQLServer 연결이 아니며 VFP OleDbProvider를 사용할 수 있습니다. Microsoft's website for VFP
VFP OleDB에 연결하고 쿼리를 실행하는 데 함께 사용됩니다. . 연결 문자열은 데이터가 상주하는 실제 경로를 가리키고 해당 폴더의 .dbf에서 쿼리 할 수 있습니다. VFP는 경로가 데이터베이스 위치임을 의미하므로 실제 "데이터베이스"에 명시 적으로 연결할 필요가 없습니다.
아무리해도 Dave와 합병 한 다른 질문은 데이터를 가져 와서 스트림에 쓸 수 있어야합니다. 유일한 다른주의 사항은 작성중인 파일 스트림이 바이너리 파일인지 확인하는 것입니다. 그렇지 않으면 {enter} 키 인 바이트를 쓸 때마다 후행 {줄 바꿈}으로 강제 작성 될 수 있습니다. 오래 전에 2d 바코드를 작성할 때 바이너리 이미지 파일을 작성하기가 힘들었고 엉망이되었습니다.
나는 FoxPro의 메모 필드라고 생각하는 곳에 저장되어 있던 일부 PDF 파일을 가져와야했습니다. 스키마는 필드를 LONGVARCHAR
으로 나열했습니다.
제공된 소스 코드를 사용할 수 있었지만 SQL을 변경해야했거나 캐스팅 오류가 발생했습니다.
PDF 파일을 문자열로 가져온 경우 BLOB에 NULL \0
값이있을 때마다 잘립니다.
string sqlSelect = "SELECT cast(inc_rawdata as Blob) as inc_rawdata, inc_filename FROM F2_522_SYS_MAP_FILES";
: 여기
내가 사용하는 SQL입니다