C# 我可以从sql到arraylist中获取多个数据类型记录并以另一种形式获取它吗

C# 我可以从sql到arraylist中获取多个数据类型记录并以另一种形式获取它吗,c#,arrays,sql-server,winforms,arraylist,C#,Arrays,Sql Server,Winforms,Arraylist,我希望在arraylist中获取我的任何表记录,并以另一种形式获取它(无论循环中有多少列将检索arraylist中的数据) 这是我的代码: public static ArrayList getrecord(String Table, String Column, Int32 id) { ArrayList asd = new ArrayList(); Form1.con.Close(); Form1.con.Open(); SqlCommand sq = new

我希望在arraylist中获取我的任何表记录,并以另一种形式获取它(无论循环中有多少列将检索arraylist中的数据) 这是我的代码:

public static ArrayList getrecord(String Table, String Column, Int32 id)
{
    ArrayList asd = new ArrayList();
    Form1.con.Close();
    Form1.con.Open();
    SqlCommand sq = new SqlCommand("Select * from " + Table + " where " + Column + " = " + id, Form1.con);
    SqlDataReader sdr = sq.ExecuteReader();
    if (sdr != null)
    {
        while (sdr.Read())
        {
            for(int i =0; i < sdr.FieldCount; i++)
            {
                asd.Add(sdr.GetValue(i).ToString());
            }
        }
    }
    return asd;
}
publicstaticarraylistgetrecord(字符串表、字符串列、int32id)
{
ArrayList asd=新的ArrayList();
格式1.con.Close();
格式1.con.Open();
SqlCommand sq=新的SqlCommand(“从“+表格+”中选择*,其中“+列+”=“+id,Form1.con”);
SqlDataReader sdr=sq.ExecuteReader();
如果(sdr!=null)
{
while(sdr.Read())
{
对于(int i=0;i
我建议使用DataTable而不是ArrayList。您可以用所需的所有记录填充DataTable,并以另一种形式使用它

System.Data.SqlClient.SqlCommand sq = new System.Data.SqlClient.SqlCommand("your sql query", "your connection string");
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.SqlClient.SqlDataAdapter sda = new System.Data.SqlClient.SqlDataAdapter(sq);
sda.Fill(dt);

这里有这么多坏东西。首先,这对sql注入非常开放。这根本不是处理查询的正确方法。其次,您有一个从任何表中获取行的通用方法。这是数据,不是泛型。您必须使用select*,这意味着您几乎总是返回大量实际上不需要的数据。从长远来看,这里的安全性和性能问题将给您带来很多痛苦。我会考虑重新思考它是如何工作的,而不是“SeangLangeSIR先生”,你能指导我一个好方法吗?实际上,我已经为所有的查询创建了一个类,并通过点击按钮来调用每种方法。那我该怎么办?我应该在按钮点击功能中查询吗?不确定你的意思。您从查询数据的方式跳到了调用数据的位置。您应该创建从数据库检索数据的过程。当需要数据时,可以在代码中调用它们。但看在上帝的份上,不要使用这种获取数据的通用方法。@SeanLange请帮助我,我想为此创建存储过程,那么你能给我一些代码吗?我怎样才能为这个查询创建带参数的st_过程?我创建了这个过程,而不是我在另一个formforeach中获取数据时必须使用的数据类型(dt.Rows中的DataRow行){string x=row[“ColumnName”].ToString();int y=int.Parse(row[“AnotherColumnName”].ToString();}它没有将行从一个类传递到另一个形式