我创建了一个数据源来连接SQL Server数据库。当我用GridView连接它时它工作正常。我需要读取某个项目(比如FirstName
)并将值存储到变量中。
如何使用此数据源?你可以给我这些陈述吗?
由于
答案 0 :(得分:3)
SqlDataSource
旨在顾名思义 - 数据绑定的数据源。 不是从数据库表中获取单个值的方法。
如果您需要阅读单个值,则应使用直接ADO.NET - SqlConnection
和SqlCommand
- 来读取该值 - 例如:
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
,或使用DataTable
和SqlDataAdapter
填充该数据表(如果您有多行)。
更新:如果您想使用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
}