C# 프로젝트에서 로컬 Access 데이터베이스를 사용합니다. 복잡한 SQL 쿼리를 개발할 필요가 있지만 조금 갇혀 있습니다. 내 테이블 구조는 다음과 같습니다 내 쿼리를 싶습니다 Visual Studio에서 데이터베이스 쿼리하기
Student:
(PK)TagID StudentID (FK)CourseID
4855755 HUJ564334 25
4534664 RED231232 33
Course
(PK)CourseID CourseName
25 Computer Science
33 Biology
CourseID-ModuleID
(FK)CourseID (FK)ModuleID
25 CMP2343
25 CMP3456
33 BIO3422
33 BIO2217
Module
(PK)ModuleID ModuleName
CMP2343 Networking
CMP3456 Databases
BIO3422 Human body
BIO2217 Genetics
ModuleID-SessionID
(FK)ModuleID (FK)SessionID
CMP2343 1ACMP2343
CMP2343 2ACMP2343
CMP3456 1ACMP3456
CMP3456 2ACMP3456
BIO3422 1ABIO3422
BIO3422 2ABIO3422
BIO2217 1ABIO2217
BIO2217 2ABIO2217
Session
(PK)SessionID SessionDate SessionTimeStart SessionTimeEnd
1ACMP2343 09/05/2013 12:00 AM 14:00 PM
2ACMP2343 05/05/2013 09:00 AM 11:00 PM
1ACMP3456 15/05/2013 12:00 AM 13:00 PM
2ACMP3456 01/05/2013 10:00 AM 13:00 PM
1ABIO3422 30/04/2013 11:00 AM 13:00 PM
2ABIO3422 01/04/2013 14:00 AM 16:00 PM
1ABIO2217 12/05/2013 16:00 AM 18:00 PM
2ABIO2217 03/05/2013 12:00 AM 14:00 PM
Attendance
(FK)TagID (FK)SessionID ScanningTime
을 찾기 위해 "현재"세션 ID TagID 및 세션 ID를 부여 TagID에 대한, 그리고 표시 (DB에 저장된 세션의 날짜와 시간을 찾고에 의해) Attendance (출석) 테이블에서 스캔 시간을 확인합니다.
난 dataGridView2의 데이터를 DB와 연결을 설정하고 표시하는 folowing 방법을 사용 I 위의 코드를 실행할 때
public void setSQL()
{
string ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\jasper\\Desktop\\AutoReg\\AutoReg\\AutoReg.accdb;";
OleDbConnection MyConn = new OleDbConnection(ConnStr);
MyConn.Open();
DataSet ds = new DataSet();
//query to ask
string query = @"SELECT s.TagID, se.SessionID, " + "'" +
DateTime.Now.ToString("MM/dd/yy HH:mm:ss tt") + @"' AS scanningTime
FROM Student s,
CourseID-ModuleID cm,
ModuleID-SessionID ms,
Session se
WHERE 1=1
AND s.TagID = 4820427
AND s.CourseID = cm.CourseID
AND ms.ModuleID = cm.ModuleID
AND ms.SessionID = se.SessionID
AND se.SessionDate = Date();";
OleDbCommand command = new OleDbCommand(query, MyConn);
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
adapter.Fill(ds);
dataGridView2.DataSource = ds.Tables[0];
MyConn.Close();
}
, I 얻을 오류 :
An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll
Additional information: IErrorInfo.GetDescription failed with E_FAIL(0x80004005).
다음과 같은 간단한 쿼리를 실행하고 표시 할 수 있으므로 메서드 구조가 정상적으로 작동합니다. "SELECT * FROM Student";
당신이 가진 문제는'se.SessionDate = Date();'라고 생각합니다. 나는 Date()가 SQL 함수라고 생각하지 않는다. (시간 부분 만 제외하고) 스캔 시간과 같이 datetime을 추가하십시오. – Greg
작동하지 않습니다. Date()가 SQL 함수임을 확신합니다 ... – jaspernorth
어떤 데이터베이스 서버를 사용하고 있습니까? – Greg