web-dev-qa-db-fra.com

Comment puis-je obtenir le résultat SQL dans une variable STRING?

J'essaie d'obtenir le résultat SQL dans une variable de chaîne C # ou un tableau de chaînes. C'est possible? Dois-je utiliser SqlDataReader d'une manière ou d'une autre? Je suis très nouveau dans les fonctions C # et toutes, qui travaillaient auparavant en PHP. Veuillez donc donner un exemple de travail si vous le pouvez (le cas échéant, je peux déjà me connecter et accéder à la base de données, insérer et sélectionner .. Je ne sais pas comment pour stocker le résultat dans une variable chaîne).

4
Vantalk

Ce n’est pas le meilleur exemple de l’historique, car si vous ne renvoyez aucune ligne de la base de données, vous obtenez une exception, mais si vous souhaitez utiliser une procédure stockée à partir de la base de données, au lieu d’exécuter une SELECT. directement à partir de votre code, cela vous permettra de renvoyer une chaîne:

public string StringFromDatabase()
    {
        SqlConnection connection = null;

        try
        {
            var dataSet = new DataSet();

            connection = new SqlConnection("Your Connection String Goes Here");
            connection.Open();

            var command = new SqlCommand("Your Stored Procedure Name Goes Here", connection)
            {
                CommandType = CommandType.StoredProcedure
            };

            var dataAdapter = new SqlDataAdapter { SelectCommand = command };

            dataAdapter.Fill(dataSet);

            return dataSet.Tables[0].Rows[0]["Item"].ToString();
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message, ex);
        }
        finally
        {
            if (connection != null)
            {
                connection.Close();
            }
        }
    }

Cela peut certainement être amélioré, mais cela vous donnerait un point de départ pour travailler si vous souhaitez utiliser un itinéraire de procédure stockée.

5
Pete Ebdon

Essaye ça:

SqlConnection con=new SqlConnection("/*connection string*/");               
SqlCommand SelectCommand = new SqlCommand("SELECT email FROM table1", con);
SqlDataReader myreader;
con.Open();

myreader = SelectCommand.ExecuteReader();

List<String> lstEmails=new List<String>();
while (myreader.Read())
 {
    lstEmails.Add(myreader[0].ToString());
    //strValue=myreader["email"].ToString();
    //strValue=myreader.GetString(0);
 }
con.Close();

accéder à la liste des emails depuis
lstEmails[0]-> premier email
lstEmails[1]-> deuxième email

...etc.,

2
Sudhakar Tillapudi

Vous pouvez utiliser un SQL Data Reader :

string sql = "SELECT email FROM Table WHERE Field = @Parameter";
string variable;
using (var connection = new SqlConnection("Your Connection String"))
using (var command = new SqlCommand(sql, connection))
{
    command.Parameters.AddWithValue("@Parameter", someValue);
    connection.Open();
    using (var reader = command.ExecuteReader())
    {
        //Check the reader has data:
        if (reader.Read())
        {
            variable = reader.GetString(reader.GetOrdinal("Column"));
        }
        // If you need to use all rows returned use a loop:
        while (reader.Read())
        {
            // Do something
        }
    }
}

Ou vous pouvez utiliser SqlCommand.ExecuteScalar ()

string sql = "SELECT email FROM Table WHERE Field = @Parameter";
string variable;
using (var connection = new SqlConnection("Your Connection String"))
using (var command = new SqlCommand(sql, connection))
{
    command.Parameters.AddWithValue("@Parameter", someValue);
    connection.Open();
    variable = (string)command.ExecuteScalar();
}
1
GarethD

Cela peut vous aider pour MySQL

MySqlDataReader reader = mycommand.ExecuteReader();
while (reader.Read())
{
  TextBox2.Text = reader.ToString();
}

Pour SQL

using (SqlCommand command = new SqlCommand("*SELECT QUERY HERE*", connection))
{
//
// Invoke ExecuteReader method.
//
SqlDataReader reader = command.ExecuteReader();
    while (reader.Read())
    {
        TextBox2.Text = reader.GetString(0);
    }
}
0
Prashanth

Essaye ça:

public string SaveStringSQL(string pQuery, string ConnectionString)
{
    var connection = new Conexao(ConnectionString);
    connection.Open();

    SqlCommand command = new SqlCommand(pQuery, connection.Connection);
    var SavedString = (string)command.ExecuteScalar();

    connection.Close();

    return SavedString;
}

La fonction ExecuteScalar enregistre le type de données figurant dans votre base de données - il vous suffit de le spécifier.

N'oubliez pas qu'il ne peut enregistrer qu'une ligne à la fois.

0
Felipe