web-dev-qa-db-fra.com

Remplir un datagridview avec les résultats d'une requête SQL

J'essaie de présenter les résultats de la requête, mais je continue à avoir une grille de données vide. C'est comme si les données elles-mêmes n'étaient pas visibles

Voici mon code:

 private void Employee_Report_Load(object sender, EventArgs e)
 {
     string select = "SELECT * FROM tblEmployee";
     Connection c = new Connection();
     SqlDataAdapter dataAdapter = new SqlDataAdapter(select, c.con); //c.con is the connection string
     SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

     DataTable table = new DataTable();
     table.Locale = System.Globalization.CultureInfo.InvariantCulture;
     dataAdapter.Fill(table);
     bindingSource1.DataSource = table;

     dataGridView1.ReadOnly = true;        
     dataGridView1.DataSource = bindingSource1;
}

Quel est le problème avec ce code?

26
user2023203

Voici votre code corrigé. Suivant oublier bindingsource

 var select = "SELECT * FROM tblEmployee";
 var c = new SqlConnection(yourConnectionString); // Your Connection String here
 var dataAdapter = new SqlDataAdapter(select, c); 

 var commandBuilder = new SqlCommandBuilder(dataAdapter);
 var ds = new DataSet();
 dataAdapter.Fill(ds);
 dataGridView1.ReadOnly = true; 
 dataGridView1.DataSource = ds.Tables[0];
35
Don Thomas Boyle
String strConnection = Properties.Settings.Default.BooksConnectionString;
SqlConnection con = new SqlConnection(strConnection);

SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = con;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "Select * from titles";
SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);

DataTable dtRecord = new DataTable();
sqlDataAdap.Fill(dtRecord);
dataGridView1.DataSource = dtRecord;
7
sayed hashim

Vous n'avez pas besoin de bindingSource1

Il suffit de définir dataGridView1.DataSource = table;

2
banging

Essayez de relier votre DataGridView à la DefaultView de la DataTable:

dataGridView1.DataSource = table.DefaultView;
1
Khan

si vous utilisez mysql, ce code peut être utilisé.

string con = "SERVER=localhost; user id=root; password=; database=databasename";
    private void loaddata()
{
MySqlConnection connect = new MySqlConnection(con);
connect.Open();
try
{
MySqlCommand cmd = connect.CreateCommand();
cmd.CommandText = "SELECT * FROM DATA1";
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
datagrid.DataSource = dt;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
0
Miguel

Vous pouvez essayer cet exemple et toujours vérifier votre Chaîne de connexion , vous pouvez utiliser cet exemple avec ou sans bindingsource pour charger les données dans datagridview.

private void Employee_Report_Load(object sender, EventArgs e)
{
        var table = new DataTable();

        var connection = "ConnectionString";

        using (var con = new SqlConnection { ConnectionString = connection })
        {
            using (var command = new SqlCommand { Connection = con })
            {

                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }

                con.Open();

                try
                {
                    command.CommandText = @"SELECT * FROM tblEmployee";
                    table.Load(command.ExecuteReader());

                    bindingSource1.DataSource = table;

                    dataGridView1.ReadOnly = true;
                    dataGridView1.DataSource = bindingSource1;

                }
                catch(SqlException ex)
                {
                    MessageBox.Show(ex.Message + " sql query error.");
                }

            }

        }

 }
0
Ramgy Borja

Vous pouvez obtenir une grille de données vide si vous définissez la source de données sur un jeu de données que vous avez ajouté au formulaire mais que vous n'utilisez pas. Définissez ceci sur Aucun si vous définissez par programme votre source de données en fonction des codes ci-dessus.

0
Damion Willi

vous devez ajouter la propriété Tables à la source de données DataGridView

 dataGridView1.DataSource = table.Tables[0];
0
Mohammed Elrayh