0

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();
4

1 に答える 1

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);
于 2013-03-24T15:18:29.743 に答える