2010-12-09 1 views
3

это мой кодкто-то знает, как удалить данные пакета Foxpro из OLEDB драйвера с C#

//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 с настольным по имени теста один тестирования, и я тестировал с нормальными SQL предложений и все идет хорошо, за исключением заявления пакета, который физически удаляет данные из базы данных, я нашел и пример, который показывает мне, как это сделать, но с другим видом диска (adodb), но даже если я могу сделать это с помощью этого кода, я хочу знать, как этот материал может работать в олед.

ответ

7
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(); 
    } 
1

Я никогда не замечал, что VFP используется; дифференцировать предложения МЕЖДУ. VFP использует; для определения утверждения продолжается на следующей строке (прямо напротив C# и других языков).

Итак, я хотел бы изменить текст команды в конце следующему

comandoFoxPro.CommandText = "USE TEST EXCLUSIVE \r\n" 
          "PACK \r\n" 
          "USE \r\n"; 

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

+1 Это хорошее решение для отправки нескольких команд FoxPro через драйвер. Было ли это решение протестировано? – DaveB 2010-12-09 16:57:43

+0

@DaveB, я не тестировал, но он был похож на другие, которые я делал в прошлом, такие как SQL-Select в курсор, затем без проблем копировал тип экспорта foxplus или XLS. @Bigmander, очевидно, новый с точками репутации и может не знать о проверке ответа, если он помог решить его проблему. Это может произойти, если это сработает для него. – DRapp 2010-12-09 17:20:14