Datagridview cellule de changement de valeur de mise à jour de la base de données
J'ai récupéré les données de base de données Mysql dans un DataGridView1. Nous supposons que je suis dans la Ligne 0. Lorsque je modifie le contenu de la Ligne 0, la Cellule 1 et appuyez sur la touche entrée ou sur un bouton, la requête de mise à Jour devrait modifier cette ligne, mais je ne suis pas en mesure de modifier la valeur de la cellule. La cellule maintient sa valeur précédente lorsque j'ajoute des données et de la base de données n'est pas modifié. Par exemple, si je change le contenu d'une cellule dans la colonne Client_Name de "Acs" à "Gmt", comment puis-je changer la valeur de la cellule à partir de "Acs" à "Gmt"? et pour l'avoir mis à jour en base de données Mysql, je suis à l'aide de c# dans visual studio 2012. ci-dessous mon code qui récupère mes données dans la base de datagridview1 toute aide est la bienvenue merci.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Configuration;
using System.Data.SqlClient;
namespace PI.Gen
{
public partial class frmMain : Form
{
MySqlConnection Conn;
public frmMain()
{
InitializeComponent();
btnDisconnect.Enabled = true;
btnLoadData.Enabled = false;
btnLoadClients.Enabled = false;
}
private void btnConnect_Click(object sender, EventArgs e)
{
string strConnect = "server=" + txtServer.Text + ";uid=" + txtUsername.Text + ";pwd=" + txtPassword.Text + ";database=" + txtDatabase.Text;
try
{
if (txtServer.TextLength <= 0 || txtUsername.TextLength <= 0 || txtDatabase.TextLength <= 0)
{
MessageBox.Show("You have an empty database connection field. Please supply a valid value.");
return;
}
Conn = new MySqlConnection(strConnect);
Conn.Open();
if (Conn.State.ToString() != "Open")
{
MessageBox.Show("Could not open database connection");
return;
}
btnDisconnect.Enabled = true;
btnConnect.Enabled = false;
btnLoadData.Enabled = true;
btnLoadClients.Enabled = true;
// btnSubmitClient.Enabled = true;
}
catch (Exception ex) //catch on general exceptions, not specific
{
MessageBox.Show(ex.Message);
return;
}
}
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (Conn != null)
{
Conn.Close();
}
}
private void btnDisconnect_Click(object sender, EventArgs e)
{
try
{
Conn.Close();
Conn = null;
btnDisconnect.Enabled = false;
btnConnect.Enabled = true;
btnLoadData.Enabled = false;
btnLoadClients.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
private void btnLoadData_Click(object sender, EventArgs e)
{
try
{
string CmdString = "SELECT * FROM t_receipients";
MySqlDataAdapter sda = new MySqlDataAdapter(CmdString, Conn);
DataSet ds = new DataSet();
sda.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
private void btnLoadClients_Click(object sender, EventArgs e)
{
try
{
string CmdString = "SELECT * FROM t_clients";
MySqlDataAdapter sda = new MySqlDataAdapter(CmdString, Conn);
DataSet ds = new DataSet();
sda.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
- Tout d'abord.. Ne gardez pas un ouvrir la connexion à votre base de données. Vous pouvez essayer la connexion, mais le garder ouvert est de ne pas enregistrer
- je le ferme avec un bouton de déconnexion
- Oui mais que faire si votre application se bloque? Ensuite, vous garder une connexion ouverte.
Vous devez vous connecter pour publier un commentaire.
Après une série d'essais et d'erreurs, j'ai enfin trouvé ce que je cherchais, donc la mise à jour de la base de données de datagridview ci-dessous est travaillé autour de mon code qui fonctionne à 100%, j'espère que ça aide quelqu'un dans le futur, et merci @RageComplex pour l'aider, mais une chose que personne ne sait comment les mettre en œuvre que je veux dire, au lieu de frapper le bouton entrée pour prendre les changements dans le datagridview, à vous de cliquer sur un bouton ty
Vous n'êtes pas updateing vos modifications à la base de données. Alors que vous conservez votre connexion ouvert ne signifie pas que cela va automatiquement mettre à jour vos données.
Tout d'abord, ne le gardez pas votre connexion ouverte. Dans votre application, vous avez un
connect
bouton qui est bon pour les tests, mais pas vraiment de garder la connexion ouverte, pas avec des bases de données, à mon avis.La façon dont vous chargez des données est correct.
Vous donner le datagridview une source de données qui est un tableau à partir de votre jeu de données. Les changements apportés dans le datagridview SONT enregistrés dans votre jeu de données, mais pas à votre base de données.
C'est comment vous mettez à jour votre base de données
Assurez-vous, avant de vous mettre à Jour votre base de données, vous utilisez
datagridview1.EndEdit()
Aussi, vous
using
, cela permettra de garantir une connexion est fermée à nouveau après l'achèvement de ce code, le mieux est de toujours avoir dans un try-except.- Vous eu des difficultés avec la connexion de la base de données qu'il semble l'être dans le félicite.
J'ai aussi oublié d'inclure MySqlDataAdapter ci-dessus, j'ai utilisé un adaptateur à l'échelle mondiale dans ce cas.
Je ne voulais pas rapport à cette question sous forme de double, mais maintenant, ça ne ressemble cette réponse.
new MySqlDataAdapter
est manquant, cela semble ok, quelle est l'erreur obtenez-vous, importante, vérifier la mise à jour de réponseJe voudrais donner le code que j'ai testé dans mon application.Je l'ai utilisé pour l'événement clic du bouton.
Je pense qu'il peut vous aider à