访问 2003
VS 2010 C#
正如主题标题所说,我遇到了问题。这与我之前提出的问题有关,Here。我希望这个帖子的模组可以接受,但我不确定。
@@Identity
Martin Parkin 建议在使用C# 和 MS-Access时不要关闭 Insert 和 Select 之间的连接。我以为我让它工作了,直到我发现事实并非如此。老实说,我不知道如何解决这个问题。因此,如果有人可以帮助我,我将不胜感激。
这是我的 btnLogin 方法..
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();
cmd.CommandText = "SELECT @ID = @@IDENTITY";
// cmd.Parameters.AddWithValue("@ID", OleDbType.WChar); << tried this, unsuccessful
int id = (int)cmd.ExecuteScalar(); // getting the same error?
myCon.Close();
这是我的 btnLogOut 方法...
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
int id = 0;
cmd.CommandText = " UPDATE [LoginLogTable] SET [LoggedOutDate] = @LoggedOutDate, [LoggedOutTime] = @LoggedOutTime WHERE [ID] = @ID";
cmd.Parameters.AddWithValue("@ID", 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
如果我这样做的方法
cmd.CommandText = "SELECT @ID = @@IDENTITY";
并隐藏cmd.ExecuteNonQuery();
它之后。然后日期和时间将被记录到数据库中,但日期和时间不会保存在数据库中,用于注销。
我不确定问题出在btnLogin
方法或btnLogOut
方法上,还是两者兼而有之。
工作解决方案
原来我是
cmd.CommandText = " UPDATE [LoginLogTable] SET [LoggedOutDate] = @LoggedOutDate,
[LoggedOutTime] = @LoggedOutTime WHERE [ID] = @ID";
cmd.Parameters.AddWithValue("@ID", id);
cmd.Parameters.AddWithValue("@LoggedOutDate", DateTime.Now.ToShortDateString());
cmd.Parameters.AddWithValue("@LoggedOutTime", DateTime.Now.ToString("HH:mm"));
然后我做了这个
cmd.CommandText = " UPDATE [LoginLogTable] SET [UserName] = @UserName, [LoggedOutDate] =
@LoggedOutDate, [LoggedOutTime] = @LoggedOutTime WHERE ID = @ID";
cmd.Parameters.AddWithValue("@UserName", txtUserName.Text);
cmd.Parameters.AddWithValue("@LoggedOutDate", DateTime.Now.ToShortDateString());
cmd.Parameters.AddWithValue("@LoggedOutTime", DateTime.Now.ToString("HH:mm"));
cmd.Parameters.AddWithValue("@ID", id);
感谢 D Stanley 和 Gord Thompson。