将列添加到已填充的DataSet

时间:2013-03-24 15:06:35

标签: c#

我正在尝试将列添加到包含我的sql表数据的数据集中。我基本上想在加载数据后添加一列来跟踪数据库中已有哪些值以及数据网格中哪些值是新的。然后我就可以知道要添加到数据库中的哪些行。我将不胜感激任何帮助。

这是我的代码,我只是想让列显示在这一点上,我将担心稍后使用这个新列更新行。

        sqlcom.CommandText = @"INSERT INTO members (firstname, lastname) VALUES ('" + textBox1.Text +"', '"+ textBox2.Text +"')";
        sqlcom.ExecuteNonQuery();

        SqlDataAdapter sqladapt = new SqlDataAdapter("SELECT * FROM members", thisConnect);
        DataSet ds = new DataSet();
        sqladapt.Fill(ds, "members");

        //add column to dataset?
        ds.Tables["members"].Columns.Add("inDb");

        dataGridView1.DataSource = ds;
        dataGridView1.DataMember = "members";

        thisConnect.Close();

1 个答案:

答案 0 :(得分:3)

试试这个,

ds.Tables["members"].Columns.Add(new DataColumn("inDb", typeof(Boolean)));

另一个选项是在select语句中返回此字段,

select *, cast(1 as bit) as InDb from member

对于从表返回的所有值设置为true。

您还应该考虑使用SQL参数来避免任何SQL注入,例如,假设我在第一个文本框中输入-','-');truncate table members;这将删除成员表中的所有行,而无需检索数据

sqlcom.CommandText = @"INSERT INTO members (firstname, lastname) 
                       VALUES (@first,@last)";
sqlcom.Parameters.AddWithValue("@first",textBox1.Text);
sqlcom.Parameters.AddWithValue("@last",textBox2.Text);