有两个表,一个用户表,里面有用户名,最后登陆时间等字段,一个消息表,有接收人,发送时间等字段,现在A给B发消息,在发送的页面有一个listbox设置时效天数,假如B登陆时超过A所设置的天数,消息就删除,不知道这个删除语句如何写,主要是时间的判断。
现在在登陆button下更新数据库取得了最后登陆时间,string sql = "update 用户信息表 set 最后登陆时间 = '" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'where 用户名 = '" + Session["name"] + "'";
L_database.execsql(sql);
接下来怎么办呢?
现在在登陆button下更新数据库取得了最后登陆时间,string sql = "update 用户信息表 set 最后登陆时间 = '" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'where 用户名 = '" + Session["name"] + "'";
L_database.execsql(sql);
接下来怎么办呢?
解决方案 »
- "在位置 0 处没有任何行。"[/b]
- 关于FpSpread新增加视图的样式应用?
- 从vs.net中打开VSS中的工程
- 在C#里做控件怎么为控件增加属性和事件啊?我用的vs2005
- asp.net下有没有比较看看的好用得下拉菜单控件,免费的给推荐一下谢谢
- 求一个最简单的vb.net购物车实例,谢谢!
- 如何通过C#程序获得某个特定数据库的表信息(有哪些表,表结构,字段类型等)?
- 系统兼容性设置与不用管理员权限安装
- ?? 结构数组 <---> byte[] ??
- 请教一个关于xml的问题,很困惑
- 我想在catch中捕捉到错误时退出for循环有什么办法么? 谁能给我段程序示例
- 对datagridView的更新、删除、插入操作的记录
DATEDIFF的用法如下:此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
(
select a.id from 消息表 a inner join 用户表 b on a.用户名=b.用户名 and DATEADD(day, a.设置的天数,a.发送时间)>b.登陆时间
)id 是关键字
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
protected void Button1_Click(object sender, EventArgs e)
{
string sql = "update 用户信息表 set 最后登陆时间 = '" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'where 用户名 = '" + username .Text + "'";
L_database.execsql(sql);
string sql1 = "delete 消息表 where id in (select a.id from 消息表 a inner join 用户信息表 b on a.接收人=b.用户名 and DATEADD(day, a.时效,a.发送时间)>b.最后登陆时间)";
L_database.execsql(sql1);
string L_sql = "select * from 用户信息表 where 用户名 = '" + username.Text + "' and 密码 ='" + userpass.Text + "'";
DataSet dataSet = new DataSet();
dataSet = L_database.GetDataSet(L_sql, "userlist");
if (dataSet.Tables["userlist"].Rows.Count == 0)
{
Response.Write("<script>alert(\"用户名不存在或密码错误,请确认后再登录!\");</script>");
}
else
{
Session["name"] = username.Text;
Response.Write("<script>alert(\"登录成功!\");</script>");
Response.Redirect("L_main.aspx");
}
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("L_userreg.aspx");
}
}
{
OleDbConnection L_dbconn = new OleDbConnection(L_ConnectionString);//定义新的数据连接控件并初始化
OleDbCommand L_comm = new OleDbCommand(strSql, L_dbconn);//定义并初始化命令对象
L_dbconn.Close();//关闭连接
L_dbconn.Open();//打开连接
L_comm.ExecuteNonQuery();//执行命令
L_dbconn.Close();//关闭连接
}
我把全部代码都贴上了,请大家帮忙找找原因,很着急,谢谢;
异常详细信息: System.Data.OleDb.OleDbException: 当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。
protected void Page_Load(object sender,EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string sql = "update 用户信息表 set 最后登陆时间 = '" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'where 用户名 = '" + username .Text + "'";
L_database.execsql(sql);
OleDbConnection L_conn = new OleDbConnection(conn);
L_conn.Open();
DataSet ds = new DataSet();
string sql1 = "delete 消息表 where id in (select a.id from 消息表 a inner join 用户信息表 b on a.接收人=b.用户名 and DATEADD(day, a.时效,a.发送时间)>b.最后登陆时间)"; System.Data.OleDb.OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
dataAdapter.SelectCommand = new System.Data.OleDb.OleDbCommand(sql1, L_conn);
dataAdapter.Fill(ds, "消息表");
L_conn.Close();
select DATEADD(day, a.时效,a.发送时间) as 发送时间 ,b.最后登陆时间 from 消息表 a inner join 用户信息表 b on a.接收人=b.用户名
protected void Page_Load(object sender,EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string sql = "update 用户信息表 set 最后登陆时间 = '" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'where 用户名 = '" + username .Text + "'";
L_database.execsql(sql);
OleDbConnection L_conn = new OleDbConnection(conn);
L_conn.Open();
DataSet ds = new DataSet();
string sql1 = "delete 消息表 where id in (select DATEADD(day, a.时效,a.发送时间) as 发送时间 ,b.最后登陆时间 from 消息表 a inner join 用户信息表 b on a.接收人=b.用户名 )";
System.Data.OleDb.OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
dataAdapter.SelectCommand = new System.Data.OleDb.OleDbCommand(sql1, L_conn);
dataAdapter.Fill(ds, "消息表");
L_conn.Close();
没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。dataAdapter.Fill(ds, "消息表");
自己写了一个但是报错
在登陆button下写的,理论上是正确的啊,
string sql1 = "delete from 消息表 where id in (select a.id from 消息表 a inner join 用户信息表 b on a.接收人=b.用户名 and DATEADD(day, a.时效,a.发送时间)<b.最后登陆时间)";