CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Problemas Con Caracter "\"

<< < (2/2)

jandresaedo:

--- Cita de: "cuajoa" --- Una recomendacion, la manera de realizar la cadena de coneccion es incorrecta, cuando los datos de las consultas son variables se utilizan parámetros, y quizá si utilizaras parámetros no ocurriría ese error.

Sino lo que podes utilizar son los càracteres de escàpe, probacon \\, porque en algunos lenguajes como c# o Actionscript  \' imprime la comilla, y si utilizas \\ imprimiría la barra.

Saludos
--- Fin de la cita ---
Podrias dar un ejemplo de una correcta cadena, ya que la mia no lo es y todavia no resuelvo el problema de agregar comillas dobles en la variable valor:
sql = "INSERT INTO " + Tabla + " (" + Campo + ") VALUES (" + Valor + ")"

Sin comillas ni simples ni dobles, no se ingresa ningun valor en la base datos,si le doy comillas simples al parecer(eso creo) la cadena no ingresa el backslash:
VALUES ('" + Valor + "')"
Entonces como hago para agregar comillas dobles donde estan las simples??, gracias.

cuajoa:
Proba con:


--- Código: Text --- &#34;INSERT INTO&#34; & Tabla & &#34;(&#34; & Campo & &#34;) VALUES  (&#34; & valor & &#34;)&#34;  No estoy seguro si se puede pasar como parámetro el nombre de un campo o de una tabla, pero si el de los valores.

La diferencia de esta cadena con la tuya es que el & es para la concatenacion de string y el + se utiliza para valores numericos.

Este es un ejemplo de como agregar datos mediante parámetros.


--- Código: Text ---         Private cn As OleDbConnection        Private cmd As OleDbCommand        Private path As String = Application.StartupPath(&#34;Ubicacion de la DB&#34;)         Private dr As OleDbDataReader         Private Sub ConectaDB()            cn = New OleDbConnection(&#34;Provider=Microsoft.Jet.OLEDB.4.0; Data Source=&#34; & path)        End Sub         Public Sub InsertarDatos()            Dim i As Integer            Dim Tabla() As String = {&#34;nombre1&#34;, &#34;nombre2&#34;}            'Declaro el Comando            Dim comandoInsert As String = &#34;INSERT INTO MiTabla (Campo1,Campo2,CampoN) VALUES (@Valor1,@Valor2,@ValorN)&#34;            'Agrego todos los parametros que necesito            Dim parametros() As String = {&#34;@Valor1&#34;, &#34;@Valor2&#34;, &#34;@ValorN&#34;}            'Agrego los valores para cada parámetro            Dim Valores() As String = {&#34;aaa&#34;, &#34;bbb&#34;, &#34;ccc&#34;}            'Establesco el tipo de dato de cada parámetro            Dim TipoDeDato() As OleDbType = {OleDbType.VarChar, OleDbType.VarChar, OleDbType.VarChar}             ConectaDB()            'Toma el comando            cmd = New OleDbCommand(comandoInsert, cn)            'agrega los parametros            For i = 0 To parametros.Length - 1                cmd.Parameters.Add(New OleDbParameter(parametros(i), TipoDeDato(i))).Value = valores(i)            Next            cn.Open()            'Ejecuto la operacion de inserción            cmd.ExecuteNonQuery()            cn.Close()        End Sub  
espero que te sirva. Saludos

jandresaedo:
Gracias a todos por las respuestas, ya me funciona, dejo la funcion de insert para una base de datos mysql:


--- Código: Text --- ''' &#60;summary&#62;    ''' Metodo para agregar datos a una tabla.    ''' &#60;/summary&#62;    ''' &#60;param name=&#34;NombreTabla&#34;&#62;Nombre de la tabla a la que se ingresaran datos.&#60;/param&#62;    ''' &#60;param name=&#34;NombreCampo&#34;&#62;Nombre del campo en el cual se agregara el valor.&#60;/param&#62;    ''' &#60;param name=&#34;Valor&#34;&#62;Variable que contiene el valor de lo que se va a ingresar a la tabla.&#60;/param&#62;    ''' &#60;remarks&#62;&#60;/remarks&#62;    Public Sub Insertar(ByVal NombreTabla As String, ByVal NombreCampo As String, ByVal Valor As String)        Dim da As MySqlClient.MySqlDataAdapter = New MySqlClient.MySqlDataAdapter()        Dim cmd As New MySqlClient.MySqlCommand        Dim myTrans As MySqlClient.MySqlTransaction         'para que el backslash ingrese hay que escaparlo con doble backslash, para eso hacemos un replace        Valor = Replace(Valor, &#34;&#092;&#34;, &#34;&#092;&#092;&#34;)        'string del mysql        sql = &#34;INSERT INTO &#34; + NombreTabla + &#34; (&#34; + NombreCampo + &#34;) VALUES ('&#34; + Valor + &#34;')&#34;        myTrans = conn.BeginTransaction        cmd = New MySqlClient.MySqlCommand(sql, conn, myTrans)        cmd.BeginExecuteNonQuery()        da.InsertCommand = cmd        cmd.Parameters.Clear()        myTrans.Commit()     End Sub  

fanduaga:
PERO COMO HAGO ESE REPLACE EN JAVA??? he tenido el mismo problema pero mi aplicaciones esta en java+mysql.. Cuando creo un metodo no puedo comparar el "\" ya que lo toma como comentario...... help me!!!!

F_Tanori:

--- Cita de: "fanduaga" ---PERO COMO HAGO ESE REPLACE EN JAVA???
--- Fin de la cita ---

Pues el foro de Java es aca

http://foros.solocodigo.com/index.php?showforum=32  :rolleyes:

hay que respetar el orden del foro, y elegir el foro correctamente ;)

------------------

Ahora... Lo que puedes hacer es buscar una funcion que te devuelva el caracter apartir del codigo ascii

Me parece que es algo asi


--- Código: Text ---char[] Diagonal = (char) 92; 
y utilizas la variable para tus propositos


aunque deberia de haber una funcion para escapar cadenas que no :S  <_<  :huh:

Saludos

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa