variable valor una tabla salida parametros obtener mostrar datos consulta c# winforms sql-server-2005 ado.net database-connectivity

c# - una - Cómo mostrar el valor impreso por la consulta sql en el cuadro de mensaje



obtener valor de una consulta sql en c# (2)

Usando ADO.NET hay cuatro opciones para devolver información desde una consulta SQL:

  • Use un objeto DataSet para reunir las filas devueltas y trabajar con estas filas además de los valores de retorno y los parámetros de retorno.
  • Utilice un objeto DataReader para recopilar las filas devueltas, moverse a través de estas filas y para recopilar valores de retorno y parámetros de retorno.
  • Utilice el método ExecuteScalar para devolver el valor de la primera columna de la primera fila de los resultados con los valores de retorno y los parámetros de retorno. Esto es más útil con funciones agregadas.
  • Use el método ExecuteNonQuery para devolver solo los parámetros de retorno y los valores devueltos. Cualquier fila devuelta se descarta. Esto es más útil para ejecutar consultas de acción.

Estos son todos los métodos llamados desde su objeto de comando.

Hay muchas maneras diferentes de despellejar a un gato, puede usar parámetros de salida, puede usar ExecuteScalar, puede usar valores devueltos o puede usar conjuntos de registros ficticios.

Debería poder hacer algo como lo siguiente en su C # para obtener el valor de retorno de una consulta

// add a new parameter, with any name we want - its for our own use only SqlParameter sqlParam = com.Parameters.Add("@ReturnValue", SqlDbType.Int); // set the direction flag so that it will be filled with the return value myParm.Direction = ParameterDirection.ReturnValue;

El código de arriba captura el valor de retorno que puede establecer según lo necesite, quizás con un 0 para existe y un 1 para no existir.

If NOT Exists(SELECT * FROM ItemList WHERE ItemName=''txtItemNama'') BEGIN INSERT INTO ItemList (ItemName) VALUES(''txtItemNamea'') Return 0; END ELSE BEGIN Return 1; END

Sin embargo, hay un poco de advertencia con el consejo anterior: normalmente uso un ORM como Linq-to-SQL o NHibernate, o utilizo procedimientos almacenados. Encuentro SQL en línea bastante engorroso. Por lo tanto, aunque mi respuesta debería ser sólida en general, probablemente deba trabajar con algunos detalles para que funcione exactamente como lo necesita.

Quiero imprimir un valor que devuelve SQL Server.

If NOT Exists(SELECT * FROM ItemList WHERE ItemName=''txtItemNama'') BEGIN INSERT INTO ItemList (ItemName) VALUES(''txtItemNamea'') END ELSE BEGIN Print ''Duplicate'' END

Esta consulta me devolverá el número de filas afectadas o Duplicar

Quiero usar este duplicado en C # en MessageBox.Show()

string query1 = "If NOT Exists(SELECT * FROM ItemList WHERE ItemName=''txtItemName'') BEGIN INSERT INTO ItemList (ItemName) VALUES(''txtItemName'') END ELSE BEGIN Print ''Duplicate'' END"; SqlCommand cmd = new SqlCommand(query1, conn); SqlDataReader dr; conn.Open(); dr=cmd.ExecuteReader(); conn.Close(); MessageBox.Show(dr);

No sé cómo usar dr para hacer esto. Por favor, ayúdenme a imprimir Duplicar aquí

MessageBox.Show (dr);

¿Qué debo hacer aquí?


unos años más tarde, pero debería poder recuperar el texto de impresión / información (como se solicitó originalmente) adjuntando un manejador de eventos al evento InfoMessage en el objeto SqlConnection -

Pero solo haz esto si no puedes (por alguna razón) usar las alternativas mencionadas en este hilo.

static void Main(string[] args) { using (SqlConnection connection = new SqlConnection(@"someconnectionstring")) { connection.Open(); using(SqlCommand command = new SqlCommand("test", connection)) { connection.InfoMessage += new SqlInfoMessageEventHandler(connection_InfoMessage); using (SqlDataAdapter adapter = new SqlDataAdapter(command)) { DataTable dt = new DataTable(); adapter.Fill(dt); // Do something with DataTable } } } } static void connection_InfoMessage(object sender, SqlInfoMessageEventArgs e) { // e contains info message etc }