내 프로젝트에서 비활성 계정이 45 일 이상 자동 삭제되도록하고 싶습니다. 테스트 목적으로 2 분이 걸렸고 다음 코드를 작성했습니다. 그러나 그것은 작동하지 않습니다. 2 분 동안 비활성 상태로 유지하면 "레코드 삭제"를 수행하는 방법을 알려줄 수 있습니까?계정을 삭제하여 45 일 동안 비활성으로 유지
내 코드는 다음과 같습니다. 업데이트
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
을 만들었습니다. 아래 스크린 샷에는 기록이 나와 있습니다. 물론
"DELETE FROM email WHERE `date` < DATE_SUB(NOW(), INTERVAL 2 MINUTE)"
은 다음과 같습니다
나중에 다음 코드 .. 당신과 같이 쿼리에 역 따옴표에date
을 둘 필요가
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();
}
}
Not working. 여기에 '날짜'는 무엇입니까? 데이터베이스 테이블에'date'라는 것을 추가해야합니까? – Mal
@Kars "date"는 원래 쿼리의 것입니다! 우리는 모두 테이블에 "마지막 활성"타임 스탬프를 저장하는 필드를 사용했습니다. 예, 당신은 당신의 테이블에 필드를 가지고 있어야합니다 (그리고 당신도 그것을 적절하게 업데이트해야합니다) 당신이 원하는 것을 얻을 수 있습니다! – ain
@Kars, 귀하의 코드에서 복사 한 것입니다. 바보 같이 굴지 마세요. – Johan