Pasar múltiples resultados de una consulta SQL (mediante un clic de botón) al mismo cuadro de texto.
Estoy intentando pasar varios resultados de la misma consulta SQL a un TextBox, sin embargo, solo estoy recibiendo un valor (resultado). ¿Por qué? El TextBox tiene el modo de texto con varias líneas.
protected void Button1_Click(object sender, EventArgs e)
{
string constr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\logi.accdb";
using (OleDbConnection con = new OleDbConnection(constr))
{
using (OleDbCommand cmd = new OleDbCommand("SELECT Action_time, User_name, Value_type, New_value FROM action_history"))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (OleDbDataReader sdr = cmd.ExecuteReader())
{
sdr.Read();
TextBox1.Text = sdr["Action_time"].ToString() + " " + sdr["User_name"].ToString()
+ " " + sdr["Value_type"].ToString() + " " + sdr["New_value"].ToString();
}
con.Close();
}
}
}
davy.ai
La razón por la que solo estás recibiendo un valor (resultado) en el TextBox es porque estás usando el método
Read()
solo una vez para leer el primer registro del conjunto de resultados de la consulta. Para pasar múltiples resultados al TextBox, necesitas recorrer todos los registros usando un buclewhile
y concatenar los resultados en el TextBox. Aquí tienes un ejemplo:En este ejemplo, el bucle
while
lee cada registro del conjunto de resultados de la consulta hasta que no hay más registros que leer. Los valores de cada registro se concatenan al TextBox usando el operador+=
, y se utilizaEnvironment.NewLine
para los saltos de línea entre múltiples registros. Ten en cuenta que la propiedadTextMode
del TextBox debe ser establecida enMultiLine
para que esto funcione correctamente.