none
blob RRS feed

  • Pregunta

  • string cmdText = "INSERT INTO Tabla (ID, FECHA, DESCRIPCION, FICHERO) VALUES (?,?,?,?)"

    MySqlCommand mySQLCommand = new MySqlCommand();
    mySQLCommand
    .CommandText = cmdText
    mySqlCommand1
    .Parameters.Add("pId", ID);
    mySqlCommand1
    .Parameters.Add("pFecha", FECHA);
    mySqlCommand1
    .Parameters.Add("pDescripcion", DESCRIPCION);
    mySqlCommand1
    .Parameters.Add("pFichero", blob);

    blob es de tipo byte[]

    al compilarlo en cmdText se muestra lo siguiente:

    "INSERT INTO Tabla(ID, FECHA, DESCRIPCION, FICHERO) VALUES

    (0,to_date('18/05/2012 09:49:57','dd/MM/yyyy HH24:mi:ss'),'Log_DataReceived_20120511014836.rar',

    System.Byte[])"

    alguien sabe como tengo que resolver este problema.

    Gracias.


    ___

    viernes, 18 de mayo de 2012 7:51

Respuestas

  • Hola,

    Ya lo he resuelto de esta forma:

    string cmdText = " INSERT INTO Tabla(ID, FECHA, DESCRIPCION, FICHERO) VALUES(:ID, :FECHA, :DESCRIPCION, :FICHERO) "; 
                
                
                    try
                    {
                        OracleCommand myCommand = new OracleCommand(cmdText, myConexion);
                        myConexion.Close();
                        myConexion.Open();
                        int i = 0;
                        myCommand.Parameters.Add("ID", OracleDbType.Int32, i, ParameterDirection.Input);
                        myCommand.Parameters.Add("FECHA", FECHA.ToString("dd/MM/yyyy HH:mm:ss"));
                        myCommand.Parameters.Add("DESCRIPCION", OracleDbType.Varchar2,
                        DESCRIPCION, ParameterDirection.Input); 
                        myCommand.Parameters.Add("FICHERO", OracleDbType.Blob, 
    			        blob , ParameterDirection.Input);
                        myCommand.CommandText = cmdText;
                        myCommand.ExecuteNonQuery();
                        EstadoConexcion = true;
                        i++;
                    }


    ___

    viernes, 18 de mayo de 2012 9:24

Todas las respuestas

  • ¿Y cuál es el problema?

    cmdText debería mostrar exactamente esto: "INSERT INTO Tabla (ID, FECHA, DESCRIPCION, FICHERO) VALUES (?,?,?,?)"

    En C# (y en cualquier lenguaje que ejecute en el CLR de .Net) los strings son tipos inmutables. Cuando asignas una variable de tipo string a un miembro de tipo string se hace una copia del contenido, así que mySQLCommand.CommandText tiene una copia del contenido de cmdText y cualquier operación que haga mySqlCommand con el comando debería mantener el valor de cmdText.

    ¿Qué pasa cuando lo ejecutas, te inserta o no te inserta el blob; o qué excepción te da?



    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    viernes, 18 de mayo de 2012 9:06
  • Hola,

    Ya lo he resuelto de esta forma:

    string cmdText = " INSERT INTO Tabla(ID, FECHA, DESCRIPCION, FICHERO) VALUES(:ID, :FECHA, :DESCRIPCION, :FICHERO) "; 
                
                
                    try
                    {
                        OracleCommand myCommand = new OracleCommand(cmdText, myConexion);
                        myConexion.Close();
                        myConexion.Open();
                        int i = 0;
                        myCommand.Parameters.Add("ID", OracleDbType.Int32, i, ParameterDirection.Input);
                        myCommand.Parameters.Add("FECHA", FECHA.ToString("dd/MM/yyyy HH:mm:ss"));
                        myCommand.Parameters.Add("DESCRIPCION", OracleDbType.Varchar2,
                        DESCRIPCION, ParameterDirection.Input); 
                        myCommand.Parameters.Add("FICHERO", OracleDbType.Blob, 
    			        blob , ParameterDirection.Input);
                        myCommand.CommandText = cmdText;
                        myCommand.ExecuteNonQuery();
                        EstadoConexcion = true;
                        i++;
                    }


    ___

    viernes, 18 de mayo de 2012 9:24
  • Hola,

    Ya lo he resuelto de esta forma:

    string cmdText = " INSERT INTO Tabla(ID, FECHA, DESCRIPCION, FICHERO) VALUES(:ID, :FECHA, :DESCRIPCION, :FICHERO) "; 
                
                
                    try
                    {
                        OracleCommand myCommand = new OracleCommand(cmdText, myConexion);
                        myConexion.Close();
                        myConexion.Open();
                        int i = 0;
                        myCommand.Parameters.Add("ID", OracleDbType.Int32, i, ParameterDirection.Input);
                        myCommand.Parameters.Add("FECHA", FECHA.ToString("dd/MM/yyyy HH:mm:ss"));
                        myCommand.Parameters.Add("DESCRIPCION", OracleDbType.Varchar2,
                        DESCRIPCION, ParameterDirection.Input); 
                        myCommand.Parameters.Add("FICHERO", OracleDbType.Blob, 
    			        blob , ParameterDirection.Input);
                        myCommand.CommandText = cmdText;
                        myCommand.ExecuteNonQuery();
                        EstadoConexcion = true;
                        i++;
                    }


    ___

    Disculpa: ¿No habías dicho que tu BD era mySQL? Veo que estás usando Oracle Data Access Components. No sabía que ODP.Net servía para mySQL.

    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    viernes, 18 de mayo de 2012 10:09
  • No, mi base de datos es pl/sql


    ___

    viernes, 18 de mayo de 2012 11:14
  • una aclaracion pl-sql no es una base de datos es el lenguaje de consulta

    la base de datos es Oracle


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 18 de mayo de 2012 12:04