2010-02-16 5 views
0

Nouveau sur VB.Net,Comment obtenir une valeur de jeu de données

Comment insérer ou sélectionner la valeur du jeu de données.

cmd = New SqlCommand("Select * from table1", con) 
    ada = New SqlDataAdapter(cmd) 
    ds = New DataSet 
    ada.Fill(ds) 
    cmd = New SqlCommand("Select * from '" & ds.Tables(0) & "' ", con) 
    mydatatable1.Load(dr3) 

Il montrait l'erreur dans '" & ds.Tables(0) & "', je veux obtenir la valeur du jeu de données

Besoin d'aide VB.Net code

+0

@Gopal - essayez-vous de fusionner ds.Tables (0) (le datatable de la première instruction select) avec mydatatable1? Je ne sais pas ce qu'est la variable dr3 ... – dugas

+0

@thedugas - Je pense que c'est plus basique que ça. Je pense qu'il veut juste les données de table1 dans le format de DataTable mais ne réalise pas que le remplissage le fait déjà. –

+0

@Mark Brittingham - Gotcha ... – dugas

Répondre

1

Vous avez une idée raisonnable jusqu'à ce que vous obtenez au point où vous essayez de créer une seconde SqlCommand. C'est, une fois que vous faites le remplissage, vous avez déjà les données dans une table. Vous ne pourriez pas lancer une autre sélection - vous l'avez déjà fait. Vous devez simplement référencer la table que vous souhaitez utiliser dans l'ensemble de données.

Si vous voulez une table de données que vous feriez quelque chose comme ça (pour VB, voir ci-dessous):

SqlDataAdapter myAdapter = new SqlDataAdapter(CommandText, con); 
    DataSet myDataset = new DataSet(); 
    myAdapter.Fill(myDataset, "Table"); // "Table" is just a name, it can be anything. 
    mydatatable1 = myDataset.Tables[0]; // Get the table 

Maintenant, si vous n'avez pas besoin d'un DataTable, en soi, mais veulent juste lire de la requête, vous utiliseriez un SqlDataReader:

cmd = new SqlCommand(CommandText, con); 
// One or more params 
cmd.Parameters.AddWithValue("@paramName", Value); 
SqlDataReader nwReader = cmd.ExecuteReader(); 

Ensuite, il suffit de lire de la nwReader:

while (nwReader.Read()) 
{ 
    string field1Val = (string)nwReader["FieldName"]; 
    etc... 
} 

Mise à jour: Je ne sais pas VB, mais voici ce que je pense il ressemblerait à ceci:

cmd = New SqlCommand("Select * from table1", con) 
ada = New SqlDataAdapter(cmd) 
ds = New DataSet 
ada.Fill(ds) 
mydatatable1 = ds.Tables(0); 

Vous pourriez bien être en mesure de raccourcir ce pour se débarrasser de l'SqlCommand supplémentaire (en supposant VB prend en charge cette syntaxe SqlDataAdapater comme C#.

ada = New SqlDataAdapter("Select * from table1", con) 
ds = New DataSet 
ada.Fill(ds) 
mydatatable1 = ds.Tables(0); 

Bonne chance ...

0

vous pouvez utiliser Microsoft Enterprise Library pour rendre facile ce processus. cette bibliothèque est une bibliothèque puissante pour travailler avec des ensembles de données.

-1

Je pense que ce que vous cherchez est

cmd = New SqlCommand ("Select * from '" & ds.Tables (0). TableName & "'", con)

cmd = New SqlCommand("Select * from table1", con) 
ada = New SqlDataAdapter(cmd) 
ds = New DataSet 
ada.Fill(ds) 
cmd = New SqlCommand("Select * from '" & ds.Tables(0).TableName & "' ", con) 
mydatatable1.Load(dr3) 
+0

-1 - Pourquoi ferais-tu jamais ça? Le second cmd est juste une reprise de la première et ne joue aucun rôle fonctionnel. Aussi, même s'il y avait * une * défense, vous avez un ensemble supplémentaire de guillemets simples. –

+0

@Sachin. J'ai utilisé votre requête, Elle affichait une erreur comme "Syntaxe incorrecte près de Table". – Gopal

0
public async Task<ResponseStatusViewModel> GetAll() 
     { 
      var responseStatusViewModel = new ResponseStatusViewModel(); 
      var connection = new SqlConnection(EmployeeConfig.EmployeeConnectionString); 
      var command = new SqlCommand("usp_GetAllEmployee", connection); 
      command.CommandType = CommandType.StoredProcedure; 

      try 
      { 
       await connection.OpenAsync(); 
       var reader = await command.ExecuteReaderAsync(); 

       var dataSet = new DataSet(); 
       dataSet.Load(reader, LoadOption.OverwriteChanges, new string[] { "Employee" }); 
       reader.Close(); 
       reader.Dispose(); 

       var employees = new List<EmployeeModel>(); 

       if (dataSet.Tables.Count > 0 && dataSet.Tables["Employee"] != null) 
       { 
        var employeeTable = dataSet.Tables["Employee"]; 

        for (int i = 0; i < employeeTable.Rows.Count; i++) 
        { 
         var employeeRow = employeeTable.Rows[i]; 

         employees.Add(new EmployeeModel 
         { 
          EmployeeID = Convert.ToInt32(employeeRow["EmployeeID"]), 
          EmployeeName = Convert.ToString(employeeRow["EmployeeName"]), 
          Address = Convert.ToString(employeeRow["Address"]), 
          GrossSalary = Convert.ToDouble(employeeRow["GrossSalary"]), 
          PF = Convert.ToDouble(employeeRow["PF"]), 
          TotalSalary = Convert.ToDouble(employeeRow["TotalSalary"]) 
         }); 
        } 
       } 
       responseStatusViewModel.Data = employees; 
       command.Dispose(); 
       connection.Dispose(); 

      } 
      catch (Exception ex) 
      { 

       throw ex; 
      } 

      return responseStatusViewModel; 
     } 
Questions connexes