0

顧客名 ( に入力) を使用してデータベースにテーブルが作成されますTextBox。作成されたテーブルのフィールドは、 の項目ListBoxです。お気に入り:

com = new SqlCommand("CREATE TABLE " + Label6.Text + " (Locations nvarchar(20), " + ListBox3.Items[0].ToString().Trim() + " nvarchar(5))", con);
con.Open();
com.ExecuteNonQuery();
con.Close();

for (int i = 1; i <= ListBox3.Items.Count-1; i++)
{
    com = new SqlCommand("ALTER TABLE " + Label6.Text + " ADD " + ListBox3.Items[i].Text.Trim() + " nvarchar(5)", con);
    con.Open();
    com.ExecuteNonQuery();
    con.Close();
}

を使用してこのテーブルをさらに表示していますGridView。お気に入り:

SqlCommand com = new SqlCommand("SELECT * FROM " + Label6.Text + "", con);
SqlDataAdapter da = new SqlDataAdapter(com);
DataTable dt = new DataTable();
da.Fill(dt);
GridView2.DataSource = dt;
GridView2.DataBind();

GridView の asp コードは次のとおりです。

<Columns>
    <asp:CommandField ShowEditButton="True" />
</Columns>

したがって、最初の列を読み取り専用にする必要があります。GridViewデータベースのcustomer(Label6.Text参照)テーブルを編集・更新したいです。注: GridView が整数のみを受け入れるようにします。

私のデータベース テーブルと Gridview のイメージは、次のリンクに示されています。親切に助けてください。ありがとうございました。

ここに画像の説明を入力

4

2 に答える 2

0

最初に、アプローチを再考し、SQLパラメーターを使用するようにすべてのSQLステートメントを変更する必要があります。現在、コードはSQLインジェクションに対して非常に脆弱です。SOにはたくさんの例があります。または、MSDNをご覧ください。

さらに、ユーザーにその場でテーブルとデータを作成させるのは良い決断ではないと思います。とにかく-本当にこの方法でこれを実装したい場合は、列を動的に追加することができます

for (int i = 0; i < dt.Columns.Count; i++)
{
    DataColumn dc = dt.Columns[i];
    BoundField bf = new BoundField();
    bf.ReadOnly = i == 0;  // will take care of setting controls to readonly in column 0
    bf.DataField = dc.ColumnName;
    GridView1.Columns.Add(bf);
}

残念ながら、数字のみを許可する列を追加するのは簡単ではありません。この場合、その場でtemplateFieldを作成し、それを列に追加する必要があります。そのためのこの例を見てください。

編集

テーブルに値を動的に追加しようとする場合は、SQLパラメータを使用する必要があります。(例 )INSERT INTO tblXYZ (abc, def) values (@valueForABC, @valueForDEF)

残念ながら、現時点では、SQLパラメータを使用してtableNamesまたはcolumNamesをパラメータ化することはできません。だから

...文字をAZ、az、0-9、'。'、'_'、および''に制限します。次に、データベースに適切な括弧を使用します(たとえば、SQL Serverの場合は[])。全体を丸めます。

ジョンスキートのこの答えに示されています。

于 2012-08-31T12:40:00.463 に答える
0

数値入力のみを受け入れるには、jQuery プラグインを使用できます。いくつかの可能性をここに示します

com = new SqlCommand("ALTER TABLE " + Label6.Text + " ADD " + ListBox3.Items[i].Text.Trim() + " nvarchar(5)", con);

このアプローチにより、 SQL インジェクションに対して脆弱になります。このような SQL ステートメントを作成すると、アプリケーション全体が非常に脆弱になります。

データベースを更新するには、テーブルから作成/選択する方法と同様の方法で作業できます。

于 2012-08-31T12:11:01.410 に答える