ADO.NET 드라이버 일부 기능을 지원하는 .NET (C#) Connector 라이브러리를 제공하고 있다.
라이브러리 위치는 $MACHBASE_HOME/lib/
에서 DLL 형태로 제공하고 있으며, .NET 버전에 따라 다른 DLL 을 제공한다.
- > .NET Framework 4.0 :
machNetConnector.dll
- > .NET Core 2.0 :
machNetConnectorCore.dll
클래스
Ui text box | ||
---|---|---|
| ||
아래 소개된 기능 외의 것은 아직 구현되어 있지 않거나, 올바르게 작동되지 않을 수 있다. |
MachConnection
마크베이스와의 연결을 담당하는 클래스이다. DbConnection 과 같이 IDisposable 을 상속받기 때문에, Dispose() 를 통한 객체 해제나 using() 문을 이용한 객체의 자동 Dispose를 지원한다.
생성자 | 설명 |
---|---|
MachConnection(string aConnectionString) | Connection String 을 입력으로, MachConnection 을 생성한다. |
메서드 | 설명 |
---|---|
Open() | 입력받은 Connection String 으로 실제 연결을 시도한다. |
Close() | 연결 중이라면, 해당 연결을 종료한다. |
BeginDbTransaction(IsolationLevel isolationLevel) | (미구현) MACHBASE 는 특별한 Transaction 이 없으므로 해당 객체 역시 지원하지 않는다. |
CreateDbCommand() | (미구현) 아직은, 명시적으로 MachCommand 를 만들도록 유도한다. |
ChangeDatabase(string databaseName) | (미구현) MACHBASE 는 DATABASE 구분이 없다. |
필드 | 설명 |
---|---|
State | System.Data.ConnectionState 값을 나타낸다. |
StatusString | 연결된 MachCommand 로 수행하는 상태를 나타낸다. Error Message 를 꾸미는 용도로 내부에서 사용되며, 작업이 시작된 상태를 나타내기 때문에 이 값으로 쿼리 상태를 체크하는 것은 적절하지 않다. |
Database | (미구현) |
DataSource | (미구현) |
ServerVersion | (미구현) |
MachCommand
MachConnection 을 이용해 SQL 명령 또는 APPEND 를 수행하는 클래스이다.
DbCommand 와 같이 IDisposable 을 상속받기 때문에, Dispose() 를 통한 객체 해제나 using() 문을 이용한 객체의 자동 Dispose를 지원한다.
생성자 | 설명 |
---|---|
MachCommand(string aQueryString, MachConnection) | 연결할 MachConnection 객체와 함께, 수행할 쿼리를 입력해서 생성한다. |
MachCommand(MachConnection) | 연결할 MachConnection 객체를 입력해서 생성한다. 수행할 쿼리가 없는 경우 (e.g. APPEND) 에만 사용한다. |
메서드 | 설명 | ||
---|---|---|---|
void CreateParameter() / void CreateDbParameter() | 새로운 MachParameter 를 생성한다. | ||
void Cancel() | (미구현) | ||
void Prepare() | (미구현) | ||
MachAppendWriter AppendOpen(aTableName, aErrorCheckCount = 0, MachAppendOption = None) | APPEND 를 시작한다. MachAppendWriter 객체를 반환한다.
| ||
void AppendData(MachAppendWriter aWriter, List<object> aDataList) | MachAppendWriter 객체를 통해, 데이터가 들어있는 리스트를 받아 데이터베이스에 입력한다.
| ||
void AppendDataWithTime(MachAppendWriter aWriter, List<object> aDataList, DateTime aArrivalTime) | AppendData() 에서, _arrival_time 값을 DateTime 객체로 명시적으로 넣을 수 있는 메서드이다. | ||
void AppendDataWithTime(MachAppendWriter aWriter, List<object> aDataList, ulong aArrivalTimeLong) | AppendData() 에서, _arrival_time 값을 ulong 객체로 명시적으로 넣을 수 있는 메서드이다.
| ||
void AppendFlush(MachAppendWriter aWriter) | AppendData() 로 입력한 데이터들을 즉시 서버로 보내, 데이터 입력을 강제한다. 호출 빈도가 잦을 수록, 성능은 떨어지지만 시스템 오류로 인한 데이터 유실율을 낮출 수 있고 에러 검사를 빠르게 할 수 있다. | ||
void AppendClose(MachAppendWriter aWriter) | APPEND 를 마친다. 내부적으로 AppendFlush() 를 호출한 뒤에 실제 프로토콜을 마친다. | ||
int ExecuteNonQuery() | 입력받았던 쿼리를 수행한다. 쿼리가 영향을 미친 레코드 개수를 반환한다. 보통 SELECT 를 제외한 쿼리를 수행할 때 사용한다. | ||
object ExecuteScalar() | 입력받았던 쿼리를 수행한다. 쿼리 Targetlist 의 첫 번째 값을 객체로 반환한다. 보통 SELECT 쿼리, 그 중에서도 결과가 1건만 나오는 SELECT (Scalar Query) 를 수행해 DbDataReader 없이 결과를 받고자 하는 경우 사용한다. | ||
DbDataReader ExecuteDbDataReader(CommandBehavior aBehavior) | 입력받았던 쿼리를 수행해, 해당 쿼리의 결과를 읽어 올 수 있는 DbDataReader 를 생성해 반환한다. |
필드 | 설명 |
---|---|
Connection / DbConnection | 연결된 MachConnection. |
ParameterCollection / DbParameterCollection | Binding 목적으로 사용할 MachParameterCollection. |
CommandText | 쿼리 문자열. |
CommandTimeout | 특정 작업 수행 중, 서버로부터 응답을 기다리기까지의 시간. MachConnection 에 설정된 값을 따르며, 여기서는 값 참조만 할 수 있다. |
FetchSize | 한번에 서버로부터 Fetch 할 레코드 개수. 기본값은 3000 이다. |
IsAppendOpened | APPEND 작업 중인 경우, Append 가 이미 열려있는지 아닌지를 판단한다. |
CommandType | (미구현) |
DesignTimeVisible | (미구현) |
UpdatedRowSource | (미구현) |
MachDataReader
Fetch 한 결과를 읽어들이는 클래스이다. 명시적으로 생성이 불가능하고 MachCommand.ExecuteDbDataReader() 로 생성된 객체만 사용이 가능하다.
메서드 | 설명 |
---|---|
string GetName(int ordinal) | ordinal 번째 컬럼 이름을 반환한다. |
string GetDataTypeName(int ordinal) | ordinal 번째 컬럼의 자료형 이름을 반환한다. |
Type GetFieldType(int ordinal) | ordinal 번째 컬럼의 자료형을 반환한다. |
int GetOrdinal(string name) | 컬럼 이름이 위치한 인덱스를 반환한다. |
object GetValue(int ordinal) | 현재 위치한 레코드의 ordinal 번째 값을 반환한다. |
bool IsDBNull(int ordinal) | 현재 위치한 레코드의 ordinal 번째 값이 NULL 인지 여부를 반환한다. |
int GetValues(object[] values) | 현재 위치한 레코드의 모든 값들을 전부 설정하고, 그 개수를 반환한다. |
xxxx GetXXXX(int ordinal) | ordinal 번째 컬럼 값을, 자료형 (XXXX) 에 맞춰 반환한다.
|
bool Read() | 다음 레코드를 읽는다. 결과가 존재하지 않으면 False 를 반환한다. |
DataTable GetSchemaTable() | (미지원) |
bool NextResult() | (미지원) |
필드 | 설명 |
---|---|
FetchSize | 한번에 서버로부터 Fetch 할 레코드 개수. 기본값은 3000 이며 여기서는 수정할 수 없다. |
FieldCount | 결과 컬럼 개수. |
this[int ordinal] | object GetValue(int ordinal) 와 동일하다. |
this[string name] | object GetValue(GetOrdinal(name)) 와 동일하다. |
HasRows | 결과가 존재하는지 여부를 나타낸다. |
RecordsAffected | MachCommand 의 것과 달리, 여기서는 Fetch Count 를 나타낸다. |
MachParameter
MachCommand 에 필요한 파라메터를 바인딩하는 클래스이다.
MachException
마크베이스에서 나타나는 에러를 표시하는 클래스이다.
에러 메시지가 설정되어 있는데, 모든 에러 메시지는 MachErrorMsg 에서 확인할 수 있다.
MachAppendWriter
Code Block | ||
---|---|---|
| ||
public sealed class MachAppendWriter |
MachCommand 를 사용하는 별도의 클래스로 APPEND 를 지원한다.
ADO.NET 표준이 아닌, MACHBASE 의 Append Protocol 을 지원하기 위한 클래스이다.
생성자는 별도로 지원하지 않고, static method 인 Create() 로 객체를 생성할 수 있다.
create() | 설명 |
---|---|
internal static MachAppendWriter Create(MachCommand aCommand, string aTableName) | MachCommand 를 사용한다. Target Table Name 을 입력한다. |
internal static MachAppendWriter Create(MachCommand aCommand, string aTableName, int aErrorCheckCount) |
ErrorDelegateFuncType
Code Block | ||
---|---|---|
| ||
MachAppendWriter 에서, APPEND 도중 MACHBASE 서버 측에서 발생하는 Error 를 감지하기 위한 함수를 지정할 수 있다.
.NET 에서는 이 함수형을 Delegator Function 으로 지정했는데, 그 함수형을 소개한다.
MachAppendException
Code Block | ||
---|---|---|
| ||
public sealed class MachAppendException : MachException |
MachException 과 동일하지만, 다음 점이 다르다.
- 에러 메시지가 서버 측으로부터 수신된다.
- 에러가 발생한 데이터 버퍼를 획득할 수 있다. (comma-separated) 이 데이터를 가공해 다시 APPEND 하거나 기록하는 용도로 사용할 수 있다.
해당 예외는 ErrorDelegateFunc 내부에서만 획득이 가능하다.
메서드 | 설명 |
---|---|
GetRowBuffer() | 에러가 발생한 데이터 버퍼를 획득할 수 있다. |