如何在另一个表的数据库中使用一个表的数据

时间:2016-04-09 12:24:57

标签: c# sql asp.net database

我的数据库中有2个表,一个用于生成GUID的用户详细信息,另一个用于登录详细信息。如何在此查询中获取用户的GUID

     SqlConnection conlog = new SqlConnection(ConfigurationManager.ConnectionStrings["loginConnectionString"].ConnectionString);
        conlog.Open();
    Session["New"] = null;
    string idQuery = "Select ID from [Table] where Username='"+Label1.Text+"'";
    SqlCommand idd = new SqlCommand(idQuery, conlog);
    string strQuery = "update logindata set LogoutTime='"+DateTime.Now+"' where UserName='"+Label1.Text+"'  ";
    SqlCommand cmd = new SqlCommand(strQuery, conlog);

   DateTime.Now.ToString());
    cmd.ExecuteNonQuery();
    Response.Redirect("Loginform.aspx");
        conlog.Close();

当我在此查询中使用用户名时,用户的所有注销时间都会更改为上次注销时间。

这是注销详细信息的屏幕截图:

2 个答案:

答案 0 :(得分:0)

这段代码:

update logindata
set LogoutTime=NEW_DATE
where UserName=USER_NAME;

说:对于UserName等于USER_NAME的每条记录,将LogoutTime设置为NEW_DATE。

但是,您只想更新单个记录,因此需要确定特定的登录详细信息。最直接的解决方案是使用SessionId / LoginId等添加列,并将查询更改为:

update logindata
set LogoutTime=NEW_DATE
where SessionId=SESSION_ID and UserName=USER_NAME;

如果您可以保证SessionId是唯一的,那么您可以删除UserName的比较。

另一种解决方案是仅使用最新的LoginTime更新记录,例如:

update logindata
set LogoutTime=NEW_DATE
order by LoginTime desc
limit 1;

您无需以这种方式添加新列。

答案 1 :(得分:0)

由于您在注销详细信息表中保留了每个用户的多条记录,因此您应该指定一种方法来更新所选记录,方法是添加新字段说出(SessionID),或者您可以使用现有的登录时间。请参阅下面的示例更新。

// Uncomment next line and update LoginTime variable to hold your Login Time as you inserted in Login Tables upon user login.
// LoginTime =
SqlConnection conlog = new SqlConnection(ConfigurationManager.ConnectionStrings["loginConnectionString"].ConnectionString);
conlog.Open();
Session["New"] = null;
string idQuery = "Select ID from [Table] where Username='" + Label1.Text + "'";
SqlCommand idd = new SqlCommand(idQuery, conlog);
string strQuery = "update logindata set LogoutTime='" + DateTime.Now + "' where UserName='" + Label1.Text + "' AND LoginTime = '" + LoginTime + "'";
SqlCommand cmd = new SqlCommand(strQuery, conlog);

DateTime.Now.ToString());
cmd.ExecuteNonQuery();
Response.Redirect("Loginform.aspx");
conlog.Close();