我有一个DataTable
从SQL查询填充到本地数据库,但我不知道如何从中提取数据.主要方法(在测试程序中):
static void Main(string[] args)
{
const string connectionString = "server=localhost\\SQLExpress;database=master;integrated Security=SSPI;";
DataTable table = new DataTable("allPrograms");
using (var conn = new SqlConnection(connectionString))
{
Console.WriteLine("connection created successfuly");
string command = "SELECT * FROM Programs";
using (var cmd = new SqlCommand(command, conn))
{
Console.WriteLine("command created successfuly");
SqlDataAdapter adapt = new SqlDataAdapter(cmd);
conn.Open();
Console.WriteLine("connection opened successfuly");
adapt.Fill(table);
conn.Close();
Console.WriteLine("connection closed successfuly");
}
}
Console.Read();
}
我用来在我的数据库中创建表的命令:
create table programs
(
progid int primary key identity(1,1),
name nvarchar(255),
description nvarchar(500),
iconFile nvarchar(255),
installScript nvarchar(255)
)
如何从DataTable
一个有意义的表单中提取数据?
DataTable有一组.Rows
DataRow元素.
每个DataRow对应于数据库中的一行,并包含一组列.
要访问单个值,请执行以下操作:
foreach(DataRow row in YourDataTable.Rows) { string name = row["name"].ToString(); string description = row["description"].ToString(); string icoFileName = row["iconFile"].ToString(); string installScript = row["installScript"].ToString(); }
渣
您可以将数据表设置为许多元素的数据源.
例如
网格视图
中继器
数据列表
等等
如果您需要从每行提取数据,那么您可以使用
table.rows[rowindex][columnindex]
要么
如果您知道列名称
table.rows[rowindex][columnname]
如果你需要迭代表,那么你可以使用for循环或foreach循环
for ( int i = 0; i < table.rows.length; i ++ ) { string name = table.rows[i]["columnname"].ToString(); } foreach ( DataRow dr in table.Rows ) { string name = dr["columnname"].ToString(); }