0

電子メールアドレスを入力してMSSQLデータベースに挿入するサンプルWebサイトがあります。次のページで、GridViewにデータベースのリストが表示されます。ここで、アドレスを削除する関数を追加する必要がありますが、アドレスが現在あるかどうかを確認する必要があります

public partial class Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = GetLastWriteTime(Request.PhysicalPath).ToString();
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string data = DateTime.Now.ToLongDateString() + "," + DateTime.Now.ToLongTimeString() + ": ";

        SqlDataSource1.InsertCommand = "INSERT INTO ListaAdresow (Email) Values('" + TextBox1.Text + "')";

        try
        {
            SqlDataSource1.Insert();
            Label2.Text += data + "added into database: " + TextBox1.Text + "<br/>";
            TextBox1.Text = "";
        }
        catch (Exception ex)
        {
            Label2.Text += data + ex.Message;
        }
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        string data = DateTime.Now.ToLongDateString() + "," + DateTime.Now.ToLongTimeString() + ": ";
        SqlDataSource1.DeleteCommand = "DELETE FROM ListaAdresow WHERE Email='" + TextBox1.Text + "'";

        SqlDataSource1.SelectCommand = "SELECT  FROM [ListaAdresow] WHERE Email=" + TextBox1.Text;

        try
        {
                SqlDataSource1.Delete();

                Label2.Text += data + "removed from database: " + TextBox1.Text + "<br/>";
                TextBox1.Text = "";

        }
        catch (Exception ex)
        {
            Label2.Text += data + ex.Message;
        }
    }
}
4

5 に答える 5

1

すべてのクエリに対してストアド プロシージャを作成することを強くお勧めしますが、例として、グリッドビューから次のようにすることができます。

if (myGrid.SelectedRows.Count > 0)
{
     int selectedIndex = myGrid.SelectedRows[0].Index;

     // gets the RowID from the first column in the grid
     int rowID = int.Parse(BooksGrid[0, selectedIndex].Value.ToString());

     string sql = "IF EXISTS(SELECT COLUMN FROM Table1 WHERE ID = @rowID)
                    BEGIN 
                      DELETE FROM TABLE1 WHERE ID = @rowID"
                    END;

     }
于 2013-01-14T20:41:06.640 に答える
0

削除の実行後に確認できる場合、データソースの削除メソッドはデータベースに影響を受ける行の合計を返します。ドキュメントを参照してください

于 2013-01-14T20:34:49.293 に答える
0

あなたの質問に答えるには、次のようなものを使用できます(テストされていません):

SqlDataAdapter da = new SqlDataAdapter();
    DataTable dt = new DataTable();

    // Create the SelectCommand using paramaterized queries
        SqlCommand command = new SqlCommand("SELECT * 
                                            FROM ListaAdresow 
                                            WHERE Email = @Email", connection);
    command.Parameters.Add("@Email", SqlDbType.VarChar, 40, TextBox1.Text);

    da.SelectCommand = command;
    da.Fill(dt);

    if (dt.Rows.Count > 0)
    {
        //Row Exists
    }
    else
    {
        //Row Does Not Exist
    }

ただし、他の人が言ったことを繰り返しDeleteCommandます。 は単独で実行でき、影響を受けるレコードの数を返します。

于 2013-01-14T20:40:20.297 に答える
0

Try to use a stored procedure and pass value with parameters. In that you can easily check whether data exists in database or not. And also it helps you to prevent somewhat sql injection. :)

于 2013-05-20T11:51:44.590 に答える