c#
2012-05-07 4 views 2 likes 
2

J'ai ensemble de données qui est rempli de requête SQL, comme celui-ciLire les données de jeu de données

cmd_sql.CommandText = " SELECT BrDok " + 
         " FROM ordersstavke " + 
         " WHERE SifParFil = '" + rw_mat["sifskl_kor"] + "'"; 

MySqlDataAdapter sql_adapter = new MySqlDataAdapter(cmd_sql); 
DataSet ds_dok = new DataSet("ordersstavke"); 
sql_adapter.Fill(ds_dok); 

Maintenant, je veux extraire la valeur des données définies pour la mise à jour sql, comme celui-ci

myQuery = "UPDATE ordersstavke " + 
      "SET BrDok = '" + rw_mat["brdok"] + "', " + 
      "SifParFil = '" + rw_mat["sifskl_kor"] + "', " + 
      "WHERE BrDok = " + ds_dok.Tables["ordersstavke"].Rows[0]["BrDok"] + "'"; 

J'ai essayé ds_dok.Tables["ordersstavke"].Rows[0]["BrDok"] mais je m'y suis une erreur, je pensais faire quelque chose comme ça

string BrDok; 
BrDok = ds_dok.["BrDok"].ToString(); 

Mais rien, comment extraire ce BrDok ou juste le mettre en procédure?

Merci infront!

+2

Quelle est l'erreur que vous avez ici? S'il vous plaît, acceptez les réponses aux questions précédentes, si elles vous ont aidé. –

+0

Erreur Shitti: la référence d'objet n'est pas définie sur une instance d'un objet. – CrBruno

+0

Lisez-vous les réponses à vos questions précédentes? Même erreur ici. – Steve

Répondre

0

Si vous fournissez un argument de chaîne pour la classe d'ensemble de données, alors il sera le nom du jeu de données et non le nom datatable. Et il n'y a pas de table dans la base de données avec le nom que vous avez fourni pour un jeu de données, alors donnez-le en remplissant l'ensemble de données. Ecrire quelque chose comme ci-dessous.

DataSet ds_dok = new DataSet(); 
sql_adapter.Fill(ds_dok,"ordersstavke"); 

et vous pouvez écrire tout le code restant tel qu'il est dans votre partie de code.

Et votre deuxième requête de mise à jour a une erreur de syntaxe, voir comme ci-dessous

myQuery = "UPDATE ordersstavke " +   "SET BrDok = '" + rw_mat["brdok"] + "', " 
+   "SifParFil = '" + rw_mat["sifskl_kor"] + "', " +   "WHERE BrDok 
= '" + ds_dok.Tables["ordersstavke"].Rows[0]["BrDok"] + "'"; 

Vous avez oublié de mettre une virgule inversée à partir à l'où la clause.

+0

J'ai toujours une erreur avec la syntaxe, mais j'ai ajouté une virgule inversée à la clause where. – CrBruno

+0

S'il vous plaît, postez la requête modifiée dans la question comme une édition –

+0

Got it, j'ai eu une virgule avant où, je dois commencer à mieux regarder le code. MERCI TOUS – CrBruno

1

Make it

DataSet ds_dok = new DataSet("ordersstavke"); 
sql_adapter.Fill(ds_dok,"BrDok"); 

Utilisez ensuite

ds_dok.Tables["BrDok"].Rows[0]["BrDok"].ToString() 
+0

Ok, cela fonctionne, mais j'ai une erreur Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'WHERE BrDok =' 565 '' à la ligne 1 – CrBruno

+0

@CrBruno, voir la modification de la requête dans le code que j'ai donné. –

+0

Merci Sai, ça marche !!! – CrBruno

1

Essayez cette

ds_dok.Tables[0].Rows[0]["BrDok"] 
0

Juste une petite allusion à la commande SQL. Vous devez utiliser sql-parameters pour préfixer l'injection sql.

Questions connexes