Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - 43H4FH44H45H4CH49H56H45H

#201
"me canso"  :laugh:

En la noche cuando llegue a mi casa subo un ejemplo de un proyecto que hice hace un par de años  :P

Pero lo que quiero recalcar es que el VS te da las soluciones sin necesidad de estarlas buscando.  >:D
#202
Cita de: raul338 en 16 Junio 2010, 16:00 PMLuego tu saltaste a decir una gran ovbiedad: que no se puede guardar texto sin comillas :¬¬ cuando en realidad intento guardar datos binarios.

Cita de: raul338 en 16 Junio 2010, 05:59 AM
2º Cambiaste el codigo, si guarda el string, pero lo que el intentaba hacer era guardar la imagen como si fuera texto (para colmo sin comillas)

Al parecer no entiendes ni lo que voz mismo escribes  :laugh:

Cita de: raul338 en 16 Junio 2010, 16:00 PM2º Me faltan Concepto basicos? Cuales?! :xD

Simple no sabes distinguir entre un byte y un .......
A que no te das cuenta  :xD

Y la solucion que propongo es utilizar el visual studio para que nos dee las soluciones, que es muy distinto a no saber utilizarlo y por lo mismo ni abrirlo para buscar las soluciones en internet.

#203
Cita de: raul338 en 16 Junio 2010, 05:59 AM
Es un reto? :xD
Si  :xD

Cita de: raul338 en 16 Junio 2010, 05:59 AM
2º Cambiaste el codigo, si guarda el string, pero lo que el intentaba hacer era guardar la imagen como si fuera texto (para colmo sin comillas) cosa que no es lo que estas proponiendo (boton2). Estas proponiendo la misma solucion que pusimos yo y danger, usar command con parametros

Estas completamente mal, no podria guardar como si fuera texto sin el uso de comillas :rolleyes: y me doy cuenta lo que tratas de decir, pero lo estas diciendo mal, supongo por una falta de conceptos basicos.

En realidad el visual studio te da la solucion al quitar las comillas simples ;D lo que ahorra mucho tiempo en lugar de estar haciendo teorias y buscando enlaces que a la final no sabes si solucionan el problema, y peor confundiendo un system.array con otro diferente que a la final causan mas confusión    :P
#204
@Hartigan

Hice el ejemplo similar al tuyo a la rapida solo para ver el error, al quitar las comillas simples de img indica el error y referencia el modo de hacerlo (no prestes atencion al button1):

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;

namespace WindowsFormsApplication1
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }

       private void button1_Click(object sender, EventArgs e)
       {
           System.IO.Stream derecho = new System.IO.MemoryStream();
           this.pictureBox1.Image.Save(derecho, System.Drawing.Imaging.ImageFormat.Jpeg);
           byte[] imgDerecha = new byte[derecho.Length];
           derecho.Position = 0;
           derecho.Read(imgDerecha, 0, System.Convert.ToInt32(derecho.Length));
           derecho.Close();
           string cadena_conexion = @"Server= (local)\SQLEXPRESS; DataBase = agenda; Integrated Security = yes;";
           SqlConnection conexion = null;
           conexion = new SqlConnection(cadena_conexion);
           String sentenciaSQL = "insert into contactos (apodo) values('" + imgDerecha + "')";
           SqlDataAdapter data_adapter = new SqlDataAdapter(sentenciaSQL, conexion);
           conexion = new SqlConnection(cadena_conexion);
           conexion.Open();
           SqlCommand cmd = new SqlCommand(sentenciaSQL, conexion);
           if ((1 != cmd.ExecuteNonQuery()))
           {
               MessageBox.Show("Se ha producido un error al acceder a la fuente de datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
           }
       }

       private void button2_Click(object sender, EventArgs e)
       {
           System.IO.Stream derecho = new System.IO.MemoryStream();
           this.pictureBox1.Image.Save(derecho, System.Drawing.Imaging.ImageFormat.Jpeg);
           byte[] imgDerecha = new byte[derecho.Length];
           derecho.Position = 0;
           derecho.Read(imgDerecha, 0, System.Convert.ToInt32(derecho.Length));
           derecho.Close();
           string cadena_conexion = @"Server= (local)\SQLEXPRESS; DataBase = agenda; Integrated Security = yes;";
           SqlConnection conexion = null;
           conexion = new SqlConnection(cadena_conexion);
           String sentenciaSQL = "insert into contactos (apodo, imagen) values('"+ textBox1.Text + "',@img)";
           SqlDataAdapter data_adapter = new SqlDataAdapter(sentenciaSQL, conexion);
           conexion = new SqlConnection(cadena_conexion);
           conexion.Open();
           SqlCommand cmd = new SqlCommand(sentenciaSQL, conexion);
           cmd.Parameters.AddWithValue("@img", imgDerecha);
           if ((1 != cmd.ExecuteNonQuery()))
           {
               MessageBox.Show("Se ha producido un error al acceder a la fuente de datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
           }
       }

       private void button3_Click(object sender, EventArgs e)
       {
           string cadena_conexion = @"Server= (local)\SQLEXPRESS; DataBase = agenda; Integrated Security = yes;";
           byte[] img = new byte[0];
           string[] datos = new string[33];
           String sentenciaSQL = "SELECT * FROM contactos WHERE apodo = 'pru1'";
           SqlConnection conexion = null;
           conexion = new SqlConnection(cadena_conexion);
           SqlDataAdapter data_adapter = new SqlDataAdapter(sentenciaSQL, conexion);
           DataTable data_table = new DataTable();
           conexion.Open();
           data_adapter.Fill(data_table);
           textBox1.Text = data_table.Rows[0][0].ToString();
           img = (byte[]) data_table.Rows[0][1];
           int ArraySize = new int();
           ArraySize = img.GetUpperBound(0);
           System.IO.Stream derec = new System.IO.MemoryStream();
           derec.Write(img, 0, img.Length);
           pictureBox2.Image = Image.FromStream(derec);
       }
   }
}


Solo presta atencion al button 2 y 3 el 1 es para @raul338

Cita de: raul338 en 16 Junio 2010, 00:45 AM
Cita de: 43H4FH44H45H4CH49H56H45H en 15 Junio 2010, 19:34 PM
Me parece que estas guardando img como si fuera un string entre ' ', debes suprimirlas, osea solo guardas:

Código (sql) [Seleccionar]
INSERT INTO contactos (nombre,imagen)
values
('Juan',img);


Esta mal porque no puedes transformar un array a texto asi de simple

Código (sql) [Seleccionar]
INSERT INTO contactos (nombre,imagen)
values
('Juan',img);

Desde C# se convierte a
Código (sql) [Seleccionar]
INSERT INTO contactos (nombre,imagen)
values
('Juan',System.Array);


En realidad seria asi:
Código (sql) [Seleccionar]
INSERT INTO contactos (nombre,imagen)
values
('Juan','System.Byte[]');



Y no se que entiendes por texto, pero mira el code del primer boton almaceno en una columna varchar(50) (apodo) el resultado del uso de las comillas simples, si no es texto entonces que es?????  :-\  

Y te dejo una imagen, si no quieres comprobarlos por ti mismo  :laugh:

#205
osea usabas
Código (sql) [Seleccionar]
'" + img + "'
haslo asi:
Código (sql) [Seleccionar]
" + img + "
#206
Esto te puede servir:

http://msdn.microsoft.com/en-us/library/aa289508(VS.71).aspx

Hay un ejemplo con archivos
#207
Me parece que estas guardando img como si fuera un string entre ' ', debes suprimirlas, osea solo guardas:

Código (sql) [Seleccionar]
INSERT INTO contactos (nombre,imagen)
values
('Juan',img);
#208
Una cosa mas, estas utilizando:

Código (csharp) [Seleccionar]
'" + img + "'

saca las dobles comillas.
#209
@Hartigan en el insert solo inserta la imagen y un string para la consulta, luego prueba nuevamente que valores guarda.

Código (sql) [Seleccionar]
INSERT INTO <nombre_tabla>
[(<campo1>[,<campo2>,...])]
values
(<valor1>,<valor2>,...);


debes especificar el campo y el valor para hacerlo.
#210
Cita de: cjordan en 14 Junio 2010, 14:35 PM
Es en Windows con Dev-C++. He encontrado una funcion que se llama kbhit que hace exactamente eso, mirar el buffer del teclado. Funciona perfectamente pero el problema esta en que tengo 3 whiles. Para el primero me funciona bien pero para los 2 siguientes no, ya que el buffer no esta vacio. Ya he hecho fflush(stdin) pero no sirve...

De pasada puede ser asi:

#include <stdio.h>
#include <windows.h>
int main()
{
int i = 0;
while (i<1)
{
if(GetAsyncKeyState(13)) i++;
printf("\n Bucle 1 %i", i);
Sleep(100);
}
while (i<2)
{
if(GetAsyncKeyState(13)) i++;
printf("\n Bucle 2 %i", i);
Sleep(100);
}
while (i<3)
{
if(GetAsyncKeyState(13)) i++;
printf("\n Bucle 3 %i", i);
Sleep(100);
}
MessageBox(0, L"Terminado", L"Terminado",MB_OK | MB_ICONSTOP);
return 0;
}


A no ser que necesites que los 3 se inicien al mismo tiempo.
Si te decides que sea multiplataforma te recomiendo Qt4

Código (cpp) [Seleccionar]
protected:
void keyPressEvent(QKeyEvent * event);


En los proyectos con GUI funciona muy bien.