SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: jandresaedo en Miércoles 4 de Julio de 2007, 00:29

Título: Problemas Con Caracter "\"
Publicado por: jandresaedo en Miércoles 4 de Julio de 2007, 00:29
HOla:
     Resulta que tomo el path de un directorio y lo dejo en una variable:
C:\Lista.net .
Tengo un problemita con esta cadena, porque cuando la paso a la base de datos entra sin el caracter "\" , y eso puede ser por el problema de las comillas:

sql = "INSERT INTO " + Tabla + " (" + Campo + ") VALUES ('" + Valor + "')"

Como pueden ver el "Valor" es donde va la cadena "C:\Lista.net", entonces estaba pensando que pueden ser las comillas simples las que impiden que el caracter "\" llegue.Alguna idea?.
Título: Re: Problemas Con Caracter "\"
Publicado por: ElNapster en Miércoles 4 de Julio de 2007, 00:40
En valor viene "C:\Lista.net" o viene solo "\" ?

 :comp:
Título: Re: Problemas Con Caracter "\"
Publicado por: jandresaedo en Miércoles 4 de Julio de 2007, 00:48
Cita de: "ElNapster"
En valor viene "C:\Lista.net" o viene solo "\" ?

 :comp:
el valor llega asi a la base de datos "C:Lista.net" , a eso te refieres?  :unsure:
Título: Re: Problemas Con Caracter "\"
Publicado por: cuajoa en Miércoles 4 de Julio de 2007, 01:45
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
Título: Re: Problemas Con Caracter "\"
Publicado por: lencho en Miércoles 4 de Julio de 2007, 02:36
Cita de: "cuajoa"
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
Eso es cierto, lo que pasa es que la barra es un caracter especial, y cuando uno quiere utilzarlo, hay que anterponerlo al comodin, que justamente es la barra.


BYTE.
Título: Re: Problemas Con Caracter "\"
Publicado por: jandresaedo en Miércoles 4 de Julio de 2007, 15:24
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
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.
Título: Re: Problemas Con Caracter "\"
Publicado por: cuajoa en Miércoles 4 de Julio de 2007, 20:52
Proba con:

Código: Text
  1.  "INSERT INTO" & Tabla & "(" & Campo & ") VALUES  (" & valor & ")"
  2.  
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
  1.  
  2.         Private cn As OleDbConnection
  3.         Private cmd As OleDbCommand
  4.         Private path As String = Application.StartupPath("Ubicacion de la DB")
  5.  
  6.         Private dr As OleDbDataReader
  7.  
  8.         Private Sub ConectaDB()
  9.             cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & path)
  10.         End Sub
  11.  
  12.         Public Sub InsertarDatos()
  13.             Dim i As Integer
  14.             Dim Tabla() As String = {"nombre1", "nombre2"}
  15.             'Declaro el Comando
  16.             Dim comandoInsert As String = "INSERT INTO MiTabla (Campo1,Campo2,CampoN) VALUES (@Valor1,@Valor2,@ValorN)"
  17.             'Agrego todos los parametros que necesito
  18.             Dim parametros() As String = {"@Valor1", "@Valor2", "@ValorN"}
  19.             'Agrego los valores para cada parámetro
  20.             Dim Valores() As String = {"aaa", "bbb", "ccc"}
  21.             'Establesco el tipo de dato de cada parámetro
  22.             Dim TipoDeDato() As OleDbType = {OleDbType.VarChar, OleDbType.VarChar, OleDbType.VarChar}
  23.  
  24.             ConectaDB()
  25.             'Toma el comando
  26.             cmd = New OleDbCommand(comandoInsert, cn)
  27.             'agrega los parametros
  28.             For i = 0 To parametros.Length - 1
  29.                 cmd.Parameters.Add(New OleDbParameter(parametros(i), TipoDeDato(i))).Value = valores(i)
  30.             Next
  31.             cn.Open()
  32.             'Ejecuto la operacion de inserción
  33.             cmd.ExecuteNonQuery()
  34.             cn.Close()
  35.         End Sub
  36.  
  37.  

espero que te sirva. Saludos
Título: Re: Problemas Con Caracter "\"
Publicado por: jandresaedo en Jueves 5 de Julio de 2007, 17:27
Gracias a todos por las respuestas, ya me funciona, dejo la funcion de insert para una base de datos mysql:

Código: Text
  1.  
  2. ''' <summary>
  3.     ''' Metodo para agregar datos a una tabla.
  4.     ''' </summary>
  5.     ''' <param name="NombreTabla">Nombre de la tabla a la que se ingresaran datos.</param>
  6.     ''' <param name="NombreCampo">Nombre del campo en el cual se agregara el valor.</param>
  7.     ''' <param name="Valor">Variable que contiene el valor de lo que se va a ingresar a la tabla.</param>
  8.     ''' <remarks></remarks>
  9.     Public Sub Insertar(ByVal NombreTabla As String, ByVal NombreCampo As String, ByVal Valor As String)
  10.         Dim da As MySqlClient.MySqlDataAdapter = New MySqlClient.MySqlDataAdapter()
  11.         Dim cmd As New MySqlClient.MySqlCommand
  12.         Dim myTrans As MySqlClient.MySqlTransaction
  13.  
  14.         'para que el backslash ingrese hay que escaparlo con doble backslash, para eso hacemos un replace
  15.         Valor = Replace(Valor, "\", "\\")
  16.         'string del mysql
  17.         sql = "INSERT INTO " + NombreTabla + " (" + NombreCampo + ") VALUES ('" + Valor + "')"
  18.         myTrans = conn.BeginTransaction
  19.         cmd = New MySqlClient.MySqlCommand(sql, conn, myTrans)
  20.         cmd.BeginExecuteNonQuery()
  21.         da.InsertCommand = cmd
  22.         cmd.Parameters.Clear()
  23.         myTrans.Commit()
  24.  
  25.     End Sub
  26.  
  27.  
Título: Re: Problemas Con Caracter "\"
Publicado por: fanduaga en Jueves 26 de Julio de 2007, 06:41
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!!!!
Título: Re: Problemas Con Caracter "\"
Publicado por: F_Tanori en Jueves 26 de Julio de 2007, 12:00
Cita de: "fanduaga"
PERO COMO HAGO ESE REPLACE EN JAVA???

Pues el foro de Java es aca

http://foros.solocodigo.com/index.php?showforum=32 (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
  1. char[] Diagonal = (char) 92;
  2.  

y utilizas la variable para tus propositos


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

Saludos