[ Foro de C# ]

Almacenar en sql server archivo generado desde un textbox

24-May-2015 19:02
Invitado (Aru)
1 Respuestas

HOLA que tal estoy tratanto de guardar el contenido de un textbox en sql server. Lo que quiero es que al escribir un parrafo  de texto en el TextBox este al dar clic en el boton guardar cree un archivo y lo guarde en  sql server. Esto es lo que tengo, solo he podido guardar el contenido que escribo en el archivo,pero no logro almacenarlo en sql server, espero y me puedan ayudar.


protected void BotGuardar_Click(object sender, EventArgs e)
        {
            
            SqlConnection connection = new SqlConnection("Data Source=USUARIO-PC\\SQLEXPRESS;Initial Catalog=bd_wikisite1;Integrated Security=True");
            connection.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = connection;
            cmd.CommandTimeout = 0;

            StreamWriter escrito = File.CreateText(Server.MapPath("Data/prueba.txt"));
            //para agregar datos al archivo existente
           
            //En una variable tipo string se ubica el contenido del Textbox
            //Se podría hacer directamente.
            string contenido = TextEditor.Text;
            byte[] data = new byte[0];
                    
            
            string commandText = "INSERT INTO Filess VALUES (@ContentType,";
            cmd.CommandText = commandText + "@Data)";
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.Add("@ContentType", SqlDbType.VarChar, 50);
            cmd.Parameters["@ContentType"].Value = contenido;
            cmd.Parameters.Add("@Data", SqlDbType.VarBinary);
            cmd.Parameters["@Data"].Value = data;
            


            cmd.ExecuteNonQuery();
            connection.Close();
                    
           
            //escribimos.
            escrito.Write(contenido.ToString());
            escrito.Flush();
            //Cerramos
            escrito.Close();
            //Vaciamos
            TextEditor.Text = "";
            Label1.Text = "Gauradado...";
        }


 


25-May-2015 14:11
Nacho Cabanes (+84)

Hay cosas raras en tu código: El parámetro Data es un array de bytes... que contiene 0 bytes, mientras que el "contenido" lo estás usando para indicar el tipo de dato, en vez de su valor. Además, no se ve el nombre que quieres que tenga ese campo...

La forma normal de guardar en SqlServer desde C# es ésta:


using (SqlConnection conexion = new SqlConnection(cadenaDeConexion))
{
    SqlCommand cmd = new SqlCommand("INSERT INTO Datos (Nombre, Tlf, Direccion) VALUES (@Nombre, @Tlf, @Direccion)");
    cmd.CommandType = CommandType.Text;
    cmd.Connection = conexion;
    cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text);
    cmd.Parameters.AddWithValue("@Tlf", txtTlf.Text);
    cmd.Parameters.AddWithValue("@Direccion", txtDireccion.Text);
    connection.Open();
    cmd.ExecuteNonQuery();
}


¿No te parece más legible? ¿Por qué no reescribes tu código para que se parezca a eso, con un único campo y un único parámetro?  






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)