使用数据源读取SQL Server数据库

时间:2011-09-04 13:36:01

标签: asp.net

我创建了一个数据源来连接SQL Server数据库。当我用GridView连接它时它工作正常。我需要读取某个项目(比如FirstName)并将值存储到变量中。

如何使用此数据源?你可以给我这些陈述吗?

由于

1 个答案:

答案 0 :(得分:3)

SqlDataSource旨在顾名思义 - 数据绑定的数据源。 是从数据库表中获取单个值的方法。

如果您需要阅读单个值,则应使用直接ADO.NET - SqlConnectionSqlCommand - 来读取该值 - 例如:

string sqlStmt = "SELECT FirstName FROM dbo.YourTable WHERE ID = @ID";

using(SqlConnection conn = new SqlConnection(your-connection-string-here-))
using(SqlCommand cmd = new SqlCommand(sqlStmt, conn))
{
   cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 4044;

   conn.Open();
   string firstName = cmd.ExecuteScalar().ToString(); 
   conn.Close();
}

ExecuteScalar调用仅在您想要读取单行,单列值时才有效 - 就像这里一样。否则,您需要使用SqlDataReader,或使用DataTableSqlDataAdapter填充该数据表(如果您有多行)。

更新:如果您想使用SqlDataAdapter,请执行此操作:

public DataTable LoadData()
{
   DataTable result = new DataTable();

   string sqlStmt = "SELECT ID, FirstName, LastName, Country " + 
                    "FROM dbo.YourTable";

   using(SqlConnection conn = new SqlConnection(your-connection-string-here-))
   using(SqlCommand cmd = new SqlCommand(sqlStmt, conn))
   {
       SqlDataAdapter dap = new SqlDataAdapter(cmd);
       dap.Fill(result);
   }

   return result;
}

当您调用此方法时,您将返回DataTable,其中包含您在SQL语句中定义的列以及数据库表中的所有行。

DataTable myData = LoadData();

现在,您可以遍历行并获取每行的FirstName值:

foreach(DataRow row in myData.Rows)
{
     string firstName = row["FirstName"].ToString();
     // do whatever you need to do with the first name
}