C# 将值从数据库导入表或其他更好的内容
我有一个关于使用数据库的问题C# 将值从数据库导入表或其他更好的内容,c#,asp.net,sql-server-2005,C#,Asp.net,Sql Server 2005,我有一个关于使用数据库的问题 string node = Session["node"].ToString(); SqlConnection dataConnection = new SqlConnection(); dataConnection.ConnectionString = ConfigurationManager.ConnectionStrings["SumooHAgentDBConnectionString"].ConnectionString; SqlCommand d
string node = Session["node"].ToString();
SqlConnection dataConnection = new SqlConnection();
dataConnection.ConnectionString = ConfigurationManager.ConnectionStrings["SumooHAgentDBConnectionString"].ConnectionString;
SqlCommand dataCommand = new SqlCommand();
dataCommand.Connection = dataConnection;
dataCommand.CommandText = ("Select * from xyz where @xyzID= xyzID AND PathType=0")
dataCommand.Parameters.AddWithValue("@xyzID", node);
dataConnection.Open();
dataCommand.ExecuteNonQuery();
dataConnection.Close();
现在表中有5列,其中有5行应该返回
然后我想在表或arraylist中添加这些值,以便以后在代码中使用这些值
这样做的最佳方式是什么????
感谢您取代dataCommand.ExecuteOnQuery(),您需要:
SqlDataAdapter a = new SqlDataAdapter(dataCommand);
DataTable resultsTable = new DataTable();
a.Fill(resultsTable);
然后,数据将位于resultsTable对象中
听起来您一般需要在ADO.NET上阅读。。。DataTables已被介绍,web上有许多示例显示了如何循环使用它们并获取数据,例如。您可以将它们添加到
DataTable
-然后您将有一个.Rows
属性,其中包含5行,.Rows
属性中的每个DataRow
都有五列保存这些值。就像内存中的数据库一样
为此,只需使用SqlDataAdapter
及其Fill
方法:
DataTable myTable = new DataTable();
SqlDataAdapter dap = new SqlDataAdapter(dataCommand);
dap.Fill(myTable);
或者,您可以使用DataReader
读取行和值,然后将它们转换为类型为“任意”的对象,并使用这五列值调用该对象类型上的构造函数,然后将生成的五个对象粘贴到列表中
,您基本上创建了自己的小ORM(对象关系映射器)
这需要您使用SqlDataReader
并执行以下操作:
SqlDataReader dr = dataCommand.ExecuteReader();
List<Entity> _list = new List<Entity>();
while(dr.Read())
{
string column1 = dr.GetString(0);
...
string column5 = dr.GetString(4);
Entity newEntity = new Entity(column1, ......., column5);
_list.Add(newEntity);
}
SqlDataReader dr=dataCommand.ExecuteReader();
列表_List=新列表();
while(dr.Read())
{
string column1=dr.GetString(0);
...
string column5=dr.GetString(4);
实体newEntity=新实体(第1列,…,第5列);
_列表。添加(新实体);
}
任何最适合您的方式—DataTable在初始加载阶段的工作量较小,但以后访问数据会有点麻烦(MyDataTable.Rows[3].Column[“ColunmName”].Value
或类似的方式)-“ORM”这种方法为您提供了一个很好的.NETCLR类型的对象,您可以更容易地使用它,但在加载数据时最初需要做更多的工作
马克
学习资源:
ExecuteOnQuery
如果您不想做所有低级ADO.NET管道工作,您可以使用Microsoft Patterns&Practices发布的方法。我只是有一个疑问:dataCommand.Parameters.AddWithValue(@xyzID),node);这是正确的还是会出现错误??此命令的用途是将存储在节点中的值提供给查询中的xyzID……有更好的方法吗??使用AddWithValues()的方法对我来说似乎是正确的。找出它是否出错的最好方法是实际尝试并运行它!这很好…但我不太擅长ado.net…有没有一个地方可以让我阅读如何在数据表中添加值…或者你能给我举个例子…uv非常有帮助…谢谢