【发布时间】:2013-03-25 18:23:59
【问题描述】:
访问 2003
VS 2010 C#
正如主题标题所说,我对此有疑问。它正在创建一个新字段来打印日期和时间,它应该在当前 ID 中标记日期和时间。我也尝试过 UPDATE 命令参数但没有成功。
我有一个不同的方法 (btnloggedIn) 可以保存用户名、登录日期和登录时间。这可以正常工作。我创建了另一种我遇到问题的方法 (btnLoggedOut)。目的是保存用户退出时的退出日期和退出时间,在登录时创建自动 ID 的 Access 中的来列中。
表名 - 登录表
>
FieldName Data Type
UserName Text
Password Text
表名 - LoginLogTable
FieldName Data Type
ID AutoNumber
UserName Text
LoggedInDate Date/Time
LoggedInTime Date/Time
LoggedOutDate Date/Time
LoggedOutTime Date/Time
ID 是 PK。它的一对多关系。登录的用户可以有很多关于日期和时间的详细信息
如果有人可以在这里帮助我,我将不胜感激。
private void btnLogOut_Click(object sender, EventArgs e)
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = " UPDATE [LoginLogTable] SET [LoggedOutDate] = ?, [LoggedOutTime] = ?
WHERE ID = ?";
cmd.Parameters.AddWithValue("@LoggedOutDate", DateTime.Now.ToShortDateString());
cmd.Parameters.AddWithValue("@LoggedOutTime", DateTime.Now.ToString("HH:mm"));
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
Close();
}
这是 btnLogin 方法的部分代码...
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO LoginLogTable (UserName, LoggedInDate, LoggedInTime) VALUES (@UserName, @LoggedInDate, @LoggedInTime)";
cmd.Parameters.AddWithValue("@UserName", txtUserName.Text);
cmd.Parameters.AddWithValue("@LoggedInDate", DateTime.Now.ToShortDateString());
cmd.Parameters.AddWithValue("@LoggedInTime", DateTime.Now.ToString("HH:mm"));
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
myCon.Close();
【问题讨论】:
-
澄清一下:这是一个 ASP.NET (web) 应用程序吗?
-
@GordThompson - 没有它的 Windows 窗体应用程序,为什么?
-
您必须先构造并执行您的INSERT,然后运行
SELECT @@IDENTITY查询以检索INSERT 刚刚创建的ID 值。它们是单独的操作。就目前而言,您的代码(显然)试图将这两个操作结合起来,但这是行不通的。另外,请记住SELECT @@IDENTITY将返回单个(标量)值,而不是行集,因此这可能会影响您调用它时调用的方法。
标签: c# sql-server ms-access