示例#1
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 데이터베이스 데이터 불러오기( Select )
        //설명 : strQuery : 데이터베이스에 실행할 쿼리 / objDataTable : 메모리 내 데이터의 한 테이블
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public CErrorReturn HLReload(string strQuery, ref DataTable objDataTable)
        {
            CErrorReturn objReturn = new CErrorReturn("CSQLite", "HLReload");

            do
            {
                try {
                    SQLiteDataAdapter objSQLiteDataAdapter = new SQLiteDataAdapter(strQuery, m_strConnection);
                    // 쿼리문 Trace
                    //Trace.WriteLine( System.DateTime.Now.ToString( "yyyy/MM/dd hh:mm:ss" ) + " Query : " + strQuery );
                    // 콜백 호출
                    if (null != _callBackQueryMessage)
                    {
                        _callBackQueryMessage(strQuery);
                    }
                    // 이름을 사용하여 지정된 범위에서 데이터 소스의 행과 일치하도록 행을 추가하거나 새로 고칩니다.
                    objSQLiteDataAdapter.Fill(objDataTable);
                }
                catch (Exception ex) {
                    Trace.WriteLine(ex.Message);
                    objReturn.m_strErrorMessage = ex.Message;
                    break;
                }

                objReturn.m_bError = false;
            } while(false);

            return(objReturn);
        }
示例#2
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 초기화
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public CErrorReturn HLInitialize(string strDatabaseFullPath)
        {
            CErrorReturn objReturn = new CErrorReturn("CSQLite", "HLInitialize");

            do
            {
                // 이름 제외한 폴더 경로
                string strDatabasePathOnly = Path.GetDirectoryName(strDatabaseFullPath);
                // 파일 이름 (확장자를 포함)
                string strDatabaseExtendName = Path.GetFileName(strDatabaseFullPath);
                // 확장자를 제거한 파일 이름
                string strDatabaseName = Path.GetFileNameWithoutExtension(strDatabaseFullPath);
                // 데이터베이스 경로랑 이름만
                _strDatabasePath = strDatabasePathOnly;
                _strDatabaseName = strDatabaseName;
                // 데이퍼베이스 폴더 유무 체크
                if (false == Directory.Exists(strDatabasePathOnly))
                {
                    // 폴더가 없으면 생성
                    Directory.CreateDirectory(strDatabasePathOnly);
                }
                // 데이터베이스 파일 유무 체크
                if (false == File.Exists(strDatabaseFullPath))
                {
                    // db3 생성
                    SQLiteConnection.CreateFile(strDatabaseFullPath);
                }
                // 확장자 포함해서 연결
                m_strConnection = string.Format(@"Data Source={0}\{1}", m_strDatabasePath, strDatabaseExtendName);

                objReturn.m_bError = false;
            } while(false);

            return(objReturn);
        }
示例#3
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 연결
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public CErrorReturn HLConnect()
        {
            CErrorReturn objReturn = new CErrorReturn("CSQLite", "HLConnect");

            do
            {
                try {
                    m_objSQLiteConnection = new SQLiteConnection(m_strConnection);
                    m_objSQLiteCommand    = new SQLiteCommand();
                    // 연결된 데이터베이스랑 커맨드 1:1 매칭
                    m_objSQLiteCommand.Connection = m_objSQLiteConnection;
                    // 이벤트 등록
                    m_objSQLiteConnection.Commit   += new SQLiteCommitHandler(OnEventCommit);
                    m_objSQLiteConnection.RollBack += new EventHandler(OnEventRollback);
                    // sql 통신 열어줌
                    m_objSQLiteConnection.Open();
                }
                catch (Exception ex) {
                    Trace.WriteLine(ex.Message);
                    objReturn.m_strErrorMessage = ex.Message;
                    break;
                }

                objReturn.m_bError = false;
            } while(false);

            return(objReturn);
        }
示例#4
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 실행( Insert, Update, Delete )
        //설명 : strQuery : 데이터베이스에 실행할 쿼리
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public CErrorReturn HLExecute(string strQuery)
        {
            CErrorReturn objReturn = new CErrorReturn("CSQLite", "HLExecute");

            do
            {
                try {
                    // sql 쿼리문 넣어줌
                    m_objSQLiteCommand.CommandText = strQuery;
                    // 쿼리문 Trace
                    //Trace.WriteLine( System.DateTime.Now.ToString( "yyyy/MM/dd hh:mm:ss" ) + " Query : " + strQuery );
                    // 콜백 호출
                    if (null != _callBackQueryMessage)
                    {
                        _callBackQueryMessage(strQuery);
                    }
                    // 연결에 대한 Transact-SQL 문을 실행하고 영향을 받는 행의 수를 반환합니다.
                    m_objSQLiteCommand.ExecuteNonQuery();
                }
                catch (Exception ex) {
                    Trace.WriteLine(ex.Message);
                    objReturn.m_strErrorMessage = ex.Message;
                    break;
                }

                objReturn.m_bError = false;
            } while(false);

            return(objReturn);
        }
示例#5
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 테이블 생성
        //설명 : strTableName : 생성 테이블 이름 / strCreate : 생성 쿼리
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private bool HLSetTableCreate(string strTableName, string strCreate)
        {
            bool bReturn = false;

            do
            {
                string strQuery = null;
                // 데이터베이스에서 delete 명령으로 값을 삭제할 때 실제 항목을 삭제하기 위해 테이블 생성 전에 해당 쿼리를 날려줌
                strQuery = "pragma auto_vacuum = 1";
                CErrorReturn objReturn = m_objSQLite.HLExecute(strQuery);
                if (true == objReturn.m_bError)
                {
                    break;
                }
                strQuery  = string.Format("create table if not exists {0} ( {1} )", strTableName, strCreate);
                objReturn = m_objSQLite.HLExecute(strQuery);
                if (true == objReturn.m_bError)
                {
                    break;
                }

                bReturn = true;
            } while(false);

            return(bReturn);
        }
示例#6
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 테이블 데이터 삽입
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private bool HLSetTableDataInsert(string strTableName, DataTable objDataTable)
        {
            bool bReturn = false;

            do
            {
                try {
                    string strQuery = "";
                    // 트랜잭션 시작
                    SQLiteTransaction objTransaction = m_objSQLite.HLBeginTransaction();
                    // INSERT 해야 하는 데이터 테이블 레코드 수만큼
                    for (int iLoopRow = 0; iLoopRow < objDataTable.Rows.Count; iLoopRow++)
                    {
                        string  strValues  = "";
                        DataRow objDataRow = objDataTable.Rows[iLoopRow];
                        strQuery = string.Format("insert into {0} values", strTableName);
                        // 테이블에 정의된 스키마 타입 개수만큼
                        for (int iLoopSchema = 0; iLoopSchema < m_strTableSchemaType.Length; iLoopSchema++)
                        {
                            // 타입 검사
                            if ("INTEGER" == m_strTableSchemaType[iLoopSchema])
                            {
                                strValues += string.Format("{0}", Convert.ToInt32(objDataRow[iLoopSchema]));
                            }
                            else if (true == m_strTableSchemaType[iLoopSchema].Contains("VARCHAR"))
                            {
                                strValues += string.Format("'{0}'", objDataRow[iLoopSchema].ToString());
                            }
                            else if ("REAL" == m_strTableSchemaType[iLoopSchema] || "DOUBLE" == m_strTableSchemaType[iLoopSchema])
                            {
                                strValues += string.Format("{0}", Convert.ToDouble(objDataRow[iLoopSchema]));
                            }

                            if (iLoopSchema != m_strTableSchemaType.Length - 1)
                            {
                                strValues += ",";
                            }
                        }
                        // INSERT 쿼리문
                        strQuery = string.Format("{0} ({1})", strQuery, strValues);
                        // 쿼리문 수행
                        CErrorReturn objReturn = m_objSQLite.HLExecute(strQuery);
                        if (true == objReturn.m_bError)
                        {
                            Trace.WriteLine(objReturn.m_strErrorMessage);
                        }
                    }
                    // 문제 없으면 트랜잭션 커밋
                    m_objSQLite.HLCommit(objTransaction);
                }
                catch (Exception ex) {
                    Trace.WriteLine(ex.Message);
                }

                bReturn = true;
            } while(false);

            return(bReturn);
        }
示例#7
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 초기화 함수
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public bool Initialize(CProcessDatabase objProcessDatabase)
        {
            bool bReturn   = false;
            var  pDocument = CDocument.GetDocument;

            do
            {
                // 상위 클래스 이어줌
                base.m_objProcessDatabase = objProcessDatabase;
                CConfig objConfig = pDocument.m_objConfig;
                // 데이터베이스 파라메터
                CConfig.CDatabaseParameter objDatabaseParameter = objConfig.GetDatabaseParameter();
                // SQLite 초기화
                m_objSQLite = new CSQLite();
                CErrorReturn objReturn = m_objSQLite.HLInitialize(string.Format(@"{0}\{1}.db3", objConfig.GetDatabaseHistoryPath(), objDatabaseParameter.strDatabaseHistory));
                if (true == objReturn.m_bError)
                {
                    break;
                }
                // SQLite Connect
                objReturn = m_objSQLite.HLConnect();
                if (true == objReturn.m_bError)
                {
                    break;
                }
                // History Align 초기화
                m_objManagerTableHistoryAlign = new CManagerTable();
                if (false == m_objManagerTableHistoryAlign.HLInitialize(
                        m_objSQLite,
                        string.Format(@"{0}\{1}.txt", objConfig.GetDatabaseTablePath(), objDatabaseParameter.strTableHistoryAlign), ""))
                {
                    break;
                }
                //              // History Inspection 초기화
                //              m_objManagerTableHistoryInspection = new CManagerTable();
                //              if( false == m_objManagerTableHistoryInspection.HLInitialize(
                //                  m_objSQLite,
                //                  string.Format( @"{0}\{1}.txt", objConfig.GetDatabaseTablePath(), objDatabaseParameter.strTableHistoryInspection ), "" ) ) break;

                // Process History Delete 초기화
                m_objProcessDatabaseHistoryDelete = new CProcessDatabaseHistoryDelete();
                if (false == m_objProcessDatabaseHistoryDelete.Initialize(m_objProcessDatabase, m_objSQLite))
                {
                    break;
                }

                bReturn = true;
            } while(false);

            return(bReturn);
        }
示例#8
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 초기화 함수
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public bool Initialize(CProcessDatabase objProcessDatabase)
        {
            bool bReturn   = false;
            var  pDocument = CDocument.GetDocument;

            do
            {
                // 상위 클래스 이어줌
                base.m_objProcessDatabase = objProcessDatabase;
                CConfig objConfig = pDocument.m_objConfig;
                // 데이터베이스 파라메터
                CConfig.CDatabaseParameter objDatabaseParameter = objConfig.GetDatabaseParameter();
                // SQLite 초기화
                m_objSQLite = new CSQLite();
                CErrorReturn objReturn = m_objSQLite.HLInitialize(string.Format(@"{0}\{1}.db3", objConfig.GetCurrentPath(), objDatabaseParameter.strDatabaseInformation));
                if (true == objReturn.m_bError)
                {
                    break;
                }
                // SQLite Connect
                objReturn = m_objSQLite.HLConnect();
                if (true == objReturn.m_bError)
                {
                    break;
                }
                // Information UI Text 초기화
                m_objManagerTableInformationUIText = new CManagerTable();
                if (false == m_objManagerTableInformationUIText.HLInitialize(
                        m_objSQLite,
                        string.Format(@"{0}\{1}.txt", objConfig.GetDatabaseTablePath(), objDatabaseParameter.strTableInformationUIText),
                        string.Format(@"{0}\{1}.txt", objConfig.GetDatabaseRecordPath(), objDatabaseParameter.strRecordInformationUIText)))
                {
                    break;
                }
                // Information User Message 초기화
                m_objManagerTableInformationUserMessage = new CManagerTable();
                if (false == m_objManagerTableInformationUserMessage.HLInitialize(
                        m_objSQLite,
                        string.Format(@"{0}\{1}.txt", objConfig.GetDatabaseTablePath(), objDatabaseParameter.strTableInformationUserMessage),
                        string.Format(@"{0}\{1}.txt", objConfig.GetDatabaseRecordPath(), objDatabaseParameter.strRecordInformationUserMessage)))
                {
                    break;
                }

                bReturn = true;
            } while(false);

            return(bReturn);
        }
示例#9
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : Get Table Information
        //설명 : 테이블 스키마 정보 받음
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private bool HLGetTableInformation(string strTableName, ref DataTable objDataTable)
        {
            bool bReturn = false;

            do
            {
                string       strQuery  = string.Format("pragma table_info({0})", strTableName);
                CErrorReturn objReturn = m_objSQLite.HLReload(strQuery, ref objDataTable);
                if (true == objReturn.m_bError)
                {
                    break;
                }

                bReturn = true;
            } while(false);

            return(bReturn);
        }
示例#10
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 테이블 데이터 삭제
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private bool HLSetTableDataDelete(string strTableName)
        {
            bool bReturn = false;

            do
            {
                string       strQuery  = string.Format("delete from {0}", strTableName);
                CErrorReturn objReturn = m_objSQLite.HLExecute(strQuery);
                if (true == objReturn.m_bError)
                {
                    break;
                }

                bReturn = true;
            } while(false);

            return(bReturn);
        }
示例#11
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : Get Table Existence
        //설명 : 테이블 존재 유무
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private bool HLGetTableExistence(string strTableName, ref bool bExistence)
        {
            bool bReturn = false;

            do
            {
                string       strQuery     = string.Format("select count(*) from sqlite_master where name = '{0}'", strTableName);
                DataTable    objDataTable = new DataTable();
                CErrorReturn objReturn    = m_objSQLite.HLReload(strQuery, ref objDataTable);
                if (true == objReturn.m_bError)
                {
                    break;
                }
                // 테이블 존재 유무 결과 받음
                bExistence = Convert.ToBoolean(objDataTable.Rows[0][0]);

                bReturn = true;
            } while(false);

            return(bReturn);
        }