CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Problemas Con Caracter "\"
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 --- "INSERT INTO" & Tabla & "(" & Campo & ") VALUES (" & valor & ")" 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("Ubicacion de la DB") Private dr As OleDbDataReader Private Sub ConectaDB() cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & path) End Sub Public Sub InsertarDatos() Dim i As Integer Dim Tabla() As String = {"nombre1", "nombre2"} 'Declaro el Comando Dim comandoInsert As String = "INSERT INTO MiTabla (Campo1,Campo2,CampoN) VALUES (@Valor1,@Valor2,@ValorN)" 'Agrego todos los parametros que necesito Dim parametros() As String = {"@Valor1", "@Valor2", "@ValorN"} 'Agrego los valores para cada parámetro Dim Valores() As String = {"aaa", "bbb", "ccc"} '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 --- ''' <summary> ''' Metodo para agregar datos a una tabla. ''' </summary> ''' <param name="NombreTabla">Nombre de la tabla a la que se ingresaran datos.</param> ''' <param name="NombreCampo">Nombre del campo en el cual se agregara el valor.</param> ''' <param name="Valor">Variable que contiene el valor de lo que se va a ingresar a la tabla.</param> ''' <remarks></remarks> 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, "\", "\\") 'string del mysql sql = "INSERT INTO " + NombreTabla + " (" + NombreCampo + ") VALUES ('" + Valor + "')" 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
[*] Página Anterior
Ir a la versión completa