Comment appeler une procédure stockée à l'aide ado.net
private void button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=*******;Initial Catalog=ChatApp;User ID=Chatapplication;Password=****";
conn.Open();
SqlCommand cmd = new SqlCommand();
string chatroomidno = textBox1.Text;
string chatroomname = textBox2.Text;
//cmd.CommandText = "Select ChatRoomID=@ChatRoomID,ChatRoomName=@ChatRoomName from tblChatRoom";
//cmd.Connection = conn;
SqlDataAdapter adapt = new SqlDataAdapter("Chatroomapp",conn);
adapt.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet ds=new DataSet();
DataTable dt = new DataTable();
adapt.SelectCommand.Parameters.Add(new SqlParameter("@ChatRoomID", SqlDbType.VarChar, 100));
adapt.SelectCommand.Parameters["@ChatRoomID"].Value = chatroomidno;
adapt.SelectCommand.Parameters.Add(new SqlParameter("@ChatRoomName", SqlDbType.VarChar, 50));
adapt.SelectCommand.Parameters["@ChatRoomName"].Value = chatroomname;
adapt.Fill(ds, "tblChatRoom");
if (dt.Rows.Count > 0)
{
MessageBox.Show("Connection Succedded");
}
else
{
MessageBox.Show("Connection Fails");
}
}
catch (Exception ex)
{
MessageBox.Show("Error", ex.Message);
}
}
lors de la compilation du programme, j'ai obtenu que la défaillance de la connexion de la boîte de message,dans la base de données
je l'ai trouvé correct,comment surmonter le programme pour obtenir la connexion a réussi boîte de message
OriginalL'auteur user2132564 | 2013-08-04
Vous devez vous connecter pour publier un commentaire.
Eh bien, vous êtes le remplissage de la
ds
ensemble de données - mais alors, vous êtes à la vérification de ladt
tableau de données pour la présence de lignes... qui ne marchera jamais, bien sûr!Si vous avez seulement besoin d'un seul
DataTable
- il suffit d'utiliser et de remplir les données de la table seul - pas de besoin pour les frais généraux d'unDataSet
. Aussi, mettez votreSqlConnection
etSqlCommand
en utilisant des blocs comme ceci:Et juste parce que vous obtenez de retour pas de lignes dans
dt.Rows
ne veut pas nécessairement dire que votre connexion a échoué..... il pourrait être simplement qu'il n'y a pas de lignes qui correspondent à votre critère de recherche! La connexion a fonctionné très bien - mais la commande SQL n'a tout simplement pas retourner toutes les lignes.OriginalL'auteur marc_s
Échec de la connexion signifie que quelque chose s'est mal passé entre votre programme et de la base de données. Pas d'enregistrements retournés ne signifie pas que la connexion a échoué. Cela signifie simplement que votre table est vide, elle ne contient pas d'enregistrements.
À l'aide de
ADO.NET
et unstored procedures
aurait été un peu différent de ce que vous avez fait. Si vous avez besoin de vérifier si la connexion a échoué, peut-être qu'il est préférable de vérifier le type d'exception est retournée dans lacatch
partie.Ci-dessous est la façon dont je l'aurais fait. J'aurais créé une méthode qui aurait manipulé mon appel, et ensuite dans votre
button1_Click
je viens d'appeler cette méthode:Ma salle de chat
domain model
pourrait ressembler à ceci:Et de la procédure stockée aurait ressemblé à ceci:
Puis dans l'appel de la méthode, vous obtiendrez la salle de chat et de faire avec lui ce que vous devez faire avec elle. Pour cet exemple, je viens de vérifier s'il existe ou pas:
J'espère que cela peut vous aider.
OriginalL'auteur Brendan Vogt