Access 2003中語法錯誤(缺少操作員)在查詢表達式 '@ID = @@ IDENTITY' II
VS 2010 C#
正如主題標題說我有問題。這與我先前提出的問題有關,Here。我希望mod可以用這個線程,但我不確定。
Martin Parkin建議在使用C#和MS-Access時使用@@Identity
時,不要關閉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士丹利和戈德·湯普森。
@D Stantley - 不應該是int id =(int)cmd.ExecuteScalar();並在註銷方法如何調用id,因爲它給我錯誤的「名稱id」在當前上下文中不存在「? – bucketblast 2013-03-26 13:39:12
@bucketblast(修復了鑄造錯誤),您需要決定_how_以保存該ID。由於這些似乎在按鈕處理程序中,最簡單的方法是將其存儲爲表單的屬性。隨着您的應用程序(以及您的編程技巧)成熟,您會發現更好的方式,但將其作爲表單的屬性將會起作用。 – 2013-03-26 13:43:54
行 - 我沒有int id = 0;在那個方法,但我仍然得到相同的錯誤。我會在頂部更新。 – bucketblast 2013-03-26 13:47:17