2010-02-16 56 views
0

VB.Net新手,如何获取数据集值

如何插入或选择数据集值。

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) 

它显示'" & ds.Tables(0) & "'错误,我想要得到的数据集值

需要VB.Net代码帮助

+0

@Gopal - 你是否试图用mydatatable1合并ds.Tables(0)(来自第一个select语句的数据表)?我不知道变量dr3是什么... – dugas 2010-02-16 13:03:00

+0

@thedugas - 我认为它比那更基本。我认为他只是想从DataTable格式的table1中获取数据,但并没有意识到填充已经完成了。 – 2010-02-16 13:08:23

+0

@Mark Brittingham - Gotcha ... – dugas 2010-02-16 13:15:43

回答

1

你有一个合理的想法的权利,直到你得到的地步您正尝试创建第二个SqlCommand。也就是,一旦你做了填充,你已经有了一个表中的数据。你不会运行另一个选择 - 你已经做到了。您只需引用要在数据集中使用的表格。

如果你想有一个数据表,你会做这样的事情(为VB,见下文):

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 

现在,如果你不需要一个DataTable本身,而只是想读从查询,你会使用SqlDataReader:

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

然后,只需从阅读nwReader:

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

更新:我不知道VB,但这里是我认为它会是什么样子:

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

您可能能够缩短这种摆脱额外的SqlCommand(假设VB支持像C#这样的SqlDataAdapater语法。

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

好运...

0

你可以使用微软企业库制作方便这一进程。这个库是一个处理数据集的强大库。

-1

我想你在找什么是

CMD =新的SqlCommand( “从选择* '” & ds.Tables(0)。表名 & “'”,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 - 为什么你会这样做?第二个cmd只是第一个cmd的重新运行,并且不起作用。此外,即使*有*一些防守,你有一套额外的单引号。 – 2010-02-16 17:30:20

+0

@Sachin。我用你的查询,它显示错误为“靠近表格的语法不正确”。 – Gopal 2010-02-17 05:53:19

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; 
     }