部分代码如下,是用C#写的,如果有人知道我万分感谢,vb的代码也行:
public bool ImportStuStandInfoToDB()
{
    try
    {
goPackage.Name = "ImportStuStandInfoToDB";   
goPackage.Description = "导入学生基本信息DTS包";

goPackage.WriteCompletionStatusToNTEventLog = false;

goPackage.FailOnError = true;

goPackage.PackagePriorityClass = (DTS.DTSPackagePriorityClass)2;
goPackage.MaxConcurrentSteps = 4;
goPackage.LineageOptions = 0;
goPackage.UseTransaction = true;

goPackage.TransactionIsolationLevel = (DTS.DTSIsolationLevel)4096;
goPackage.AutoCommitTransaction = true;
goPackage.RepositoryMetadataOptions = 0;
goPackage.UseOLEDBServiceComponents = true;
goPackage.LogToSQLServer = false;
goPackage.LogServerFlags = 0;
goPackage.FailPackageOnLogFailure = false;
goPackage.ExplicitGlobalVariables = false;
goPackage.PackageType = 0;
DTS.Connection2 oConnection; //文件后缀名
string strFileFix;
strFileFix = this.strFilePath.Substring(this.strFilePath.Length-3);
strFileFix = strFileFix.ToUpper();
oConnection = null; //根据文件后缀名来决定连接类型
if (strFileFix == "MDB")
{
oConnection = (DTS.Connection2)goPackage.Connections.New("Microsoft.Jet.OLEDB.4.0");
oConnection.ConnectionProperties.Item("Mode").Value = 1;
}
else if ( strFileFix == "XLS" )
{
        oConnection = (DTS.Connection2)goPackage.Connections.New("Microsoft.Jet.OLEDB.4.0");
oConnection.ConnectionProperties.Item("Extended Properties").Value = "Excel 8.0;HDR=YES;";
}
else if ( strFileFix == "DBC" )
{
        //VFP的文件我不知道选什么数据源,我写了"VFPOLEDB.1",不过不对
oConnection = (DTS.Connection2)goPackage.Connections.New("VFPOLEDB.1");
}

//把要导入的文件的路径给连接的Data Source属性
oConnection.ConnectionProperties.Item("Data Source").Value = this.strFilePath;

//连接的名称
oConnection.Name = "连接1";
//连接的ID
oConnection.ID = 1;
oConnection.Reusable = true;
oConnection.ConnectImmediate = false;
//把要导入的文件的路径给连接的Data Source属性
oConnection.DataSource = this.strFilePath;
//失败时间
oConnection.ConnectionTimeout = 60;
oConnection.UseTrustedConnection = false;
oConnection.UseDSL = false;

//把连接加入到DTS包中
goPackage.Connections.Add((DTS.Connection)oConnection);
oConnection = null;

解决方案 »

  1.   

    有个土办法,将vfp数据读出到DataSet中,再通过循环表的行插入数据到新的数据库sqlserver中,或者可以通过DataSet一次性添加到SqlServer中(更新合并)
      

  2.   

    直接在SQL Server中执行DTS包可以吗?
      

  3.   

    谢谢各位大虾们的指点!
    先回答邹建的问题
    我是在程序里动态生成了一个DTS包,用户数据源是不确定的,这个DTS包里的字段对应关系是在程序里指定并把对应关系存放到了SQL Server的一张表里,在SQL Server里生成的包不能做到这点。我也在SQL Server里手动生成了一个DTS包,当用到VFP做数据源的时候,它就需要DSN。我在程序里动态生成的DTS包,用户VFP数据文件的路径和名称不确定,这个DSN怎么做?能不能不用DSN连VFP?关于 JadyZhu(木独朱)的解决方案我们在以前做这个导入的时候就是这样做的,速度慢是一个方面,而且我们做的是WEB项目,要放到网络上,这样会给WEB服务器增加很大的负担。还有其他的办法吗?