Удаление учетных записей, неактивных в течение 45 дней - PullRequest
1 голос
/ 29 августа 2011

В моем проекте я хочу автоматически удалять учетные записи, которые неактивны более 45 дней. Для тестирования я потратил 2 минуты и написал следующий код. Но это не работает. Может кто-нибудь сказать мне, как выполнить «Удаление записи», если неактивен в течение 2 минут.

Мой код следует.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Odbc;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=inactive;" + "UID=root;" + "PASSWORD=*********;" + "OPTION=3";
        OdbcConnection MyConnection = new OdbcConnection(MyConString);
        try
        {
            MyConnection.Open();
            OdbcCommand cmd = new OdbcCommand("DELETE name FROM email WHERE date < DATE_SUB(NOW(), INTERVAL 2 MIN)", MyConnection);
            MyConnection.Close();
            Label1.Text = "Done";
        }
        catch (Exception ex)
        {
            Label1.Text = ex.ToString();
        }

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=inactive;" + "UID=root;" + "PASSWORD=*********;" + "OPTION=3";
            OdbcConnection MyConnection = new OdbcConnection(MyConString);
            try
            {
                MyConnection.Open();
                OdbcCommand cmd = new OdbcCommand("Select name from email where email=?", MyConnection);
                cmd.Parameters.Add("@email", OdbcType.VarChar, 255).Value = TextBox1.Text;
                OdbcDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows == false)
                {
                    throw new Exception();
                }

                if (dr.Read())
                {
                   Response.Write(dr[0].ToString());
                }
            }
            catch
            {

            }
    }
}


Обновлен:

Сначала я создал базу данных с именем inactive и создал таблицу email. На скриншоте ниже записана запись.

enter image description here

Позже я использовал следующий код ..

protected void Page_Load(object sender, EventArgs e)
{
    string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=inactive;" + "UID=root;" + "PASSWORD=******;" + "OPTION=3";
    OdbcConnection MyConnection = new OdbcConnection(MyConString);
    try
    {
        MyConnection.Open();
        OdbcCommand cmd = new OdbcCommand("DELETE FROM email WHERE `date` < DATE_SUB(NOW(), INTERVAL 2 MINUTE)", MyConnection);
        MyConnection.Close();


    }
    catch (Exception ex)
    {
        Label1.Text = ex.ToString();
    }
    }

Ответы [ 3 ]

1 голос
/ 29 августа 2011

Ваш синтаксис DELETE кажется неправильным, отбросьте имя поля "name", то есть

DELETE FROM email WHERE `date` < DATE_SUB(NOW(), INTERVAL 2 MINUTE)

(команда delete удаляет всю строку, а не одно поле)

1 голос
/ 29 августа 2011

Вместо MIN следует использовать MINUTE , поэтому:

DELETE FROM email WHERE `date` < DATE_SUB(NOW(), INTERVAL 2 MINUTE)
1 голос
/ 29 августа 2011

Вам нужно поставить date в обратных галочках в запросе, например так:

"DELETE FROM email WHERE `date` < DATE_SUB(NOW(), INTERVAL 2 MINUTE)"  

Конечно, было бы еще лучше не назвать поле date, а что-то более наглядное, например lastchange.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...