c# - 有人知道如何使用 C# 从 oledb 驱动程序中删除 pack foxpro 数据

标签 c# oledb foxpro

这是我的代码

//Probando insercion
        OleDbConnection conexionFoxPro = new OleDbConnection();

        string rutaFoxPro = @"C:\Users\BigMander\Documents\Proyectos de Visual FoxPro\prueba.dbc";

        conexionFoxPro.ConnectionString = String.Format("Provider=VFPOLEDB.1;Data Source={0};Exclusive=Yes;", rutaFoxPro);

        bool sePudoEjecutarTodo = true;

        try
        {
            conexionFoxPro.Open();

            OleDbCommand comandoFoxPro = new OleDbCommand();

            comandoFoxPro.CommandText =
                @"INSERT INTO test ([nombre], [telefono], [id]) VALUES (?, ?, ?)";


            comandoFoxPro.Parameters.Add("nombre", OleDbType.Char).Value = "bigmander";
            comandoFoxPro.Parameters.Add("telefono", OleDbType.Char).Value = "some number";
            comandoFoxPro.Parameters.Add("id", OleDbType.Integer).Value = 5;

            comandoFoxPro.Connection = conexionFoxPro;

            sePudoEjecutarTodo &= (comandoFoxPro.ExecuteNonQuery() > 0);

            comandoFoxPro.CommandText =
                @"SELECT nombre, telefono FROM test";

            OleDbDataReader reader = comandoFoxPro.ExecuteReader();

            while (reader.Read())
            {
                Console.WriteLine("{0}: {1}", reader.GetName(0), reader["nombre"]);
                Console.WriteLine("{0}: {1}", reader.GetName(1), reader["telefono"]);
            }

            reader.Close();
            reader.Dispose();

            comandoFoxPro.CommandText =
                "DELETE FROM test WHERE id = 5";

            sePudoEjecutarTodo &= (comandoFoxPro.ExecuteNonQuery() > 0);

            comandoFoxPro.CommandText =
                "SET EXCLUSIVE ON; PACK test";

            sePudoEjecutarTodo &= (comandoFoxPro.ExecuteNonQuery() > 0);
        }
        catch(OleDbException oleDbE)
        {
            sePudoEjecutarTodo = false;
            Console.WriteLine(oleDbE.Message);

        }
        finally
        {
            if (sePudoEjecutarTodo)
                Console.WriteLine("Congratulaciones si se armo todo");
            else
                Console.WriteLine("Pelas");

            conexionFoxPro.Close();
            Console.ReadKey();
        }

我在 foxpro 9 中有一个数据库,其中有一个名为 test 的测试表,我用普通的 sql 语句进行了测试,除了从数据库中物理删除数据的 pack 语句外,一切都很好,我发现并向我展示了示例如何做到这一点,但它与其他有点驱动器 (adodb) 一起使用,但即使我可以使用该代码做到这一点,我也想知道这些东西如何在 oledb 中工作。

最佳答案

    static void Main(string[] args)
    {
    Console.WriteLine("Starting program execution...");

    string connectionString = @"Provider=VFPOLEDB.1;Data Source=h:\dave\"; 

    using (OleDbConnection connection = new OleDbConnection(connectionString)) 
    { 
        using (OleDbCommand scriptCommand = connection.CreateCommand()) 
        { 
            connection.Open();

            string vfpScript = @"SET EXCLUSIVE ON
                                DELETE FROM test WHERE id = 5
                                PACK"; 

            scriptCommand.CommandType = CommandType.StoredProcedure; 
            scriptCommand.CommandText = "ExecScript"; 
            scriptCommand.Parameters.Add("myScript", OleDbType.Char).Value = vfpScript; 
            scriptCommand.ExecuteNonQuery(); 
        } 
    } 

    Console.WriteLine("End program execution..."); 
    Console.WriteLine("Press any key to continue"); 
    Console.ReadLine(); 
    }

关于c# - 有人知道如何使用 C# 从 oledb 驱动程序中删除 pack foxpro 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4395200/

相关文章:

c# - 使用 Excel OleDb 以工作表顺序获取工作表名称

c# - 如何使用 MS Ole DB 提供程序创建跨两个 foxpro 数据库的连接?

c# - 我可以在运行时编辑资源文件吗

mysql - SQL Server 到 MySQL 数据传输

c# - .txt 文件格式的 Microsoft Jet OLEDB 4.0 连接字符串

java - 将 FoxPro 程序文件转换为 Java

mysql - FoxPro -> MySQL

c# - 签名出现在 AttributeStatement 旁边时出现 SAML 2.0 错误 (.Net 4.5)

c# - 如果跳过 else 语句,我错过了什么?

c# - 委托(delegate)的组成(功能陷阱)