EMDI는 지금도 개발중

C# : DBConnection 이용해서 SQLite 연결 및 쿼리 실행 본문

언어/C#

C# : DBConnection 이용해서 SQLite 연결 및 쿼리 실행

EMDI 2020. 3. 31. 16:45

저번 글에서는 SqlConnection을 이용해서 SQL Server 데이터베이스를 연결하는 방법에 대해 공부해봤습니다. 아래의 링크는 MS-SQL(SQL Server) DB를 연결하는 방법에 대해 정리해놓은 글입니다. MS-SQL 연결에 대해 궁금하신 분들은 아래의 링크를 확인해주세요.

 

C# : 데이터베이스 연결 및 MS-SQL 쿼리 쓰기

C#에서 데이터베이스 연동과 쿼리를 실행하는 방법에 대해 써보도록 하겠습니다. 데이터베이스는 MSSQL을 기준으로 작성하였습니다. 1. DB연결 및 파라미터 없는 쿼리 실행 using System.Data.SqlClient; // sqlCo..

milkoon1.tistory.com


1. DbConnection는 어떻게 사용하는가?

데이터베이스 형식은 전에 공부했던 SQL Server뿐만 아니라 MySQL, SQLite 등 종류가 다양하게 있습니다. 내가 만약 1개의 데이터베이스만 고려할 것이 아닌 여러 데이터베이스를 고려해야 한다면 DBConnection을 이용해서 쉽게 관리할 수 있습니다.

using System.Data.SqlClient;
using System.Data.Odbc;
using System.Data.OleDb;

// DB연결 객체
DbConnection dbConnection = null;

/// <summary>
/// 데이터베이스 형식을 나타냅니다.
/// </summary>
public DatabaseType Type
{
    get { return _databaseType; }
    set { _databaseType = value; }
}

public int Connect()
{
    if (Type == DatabaseType.ODBC)
    {
        dbConnection = (DbConnection)new OdbcConnection();
    }
    else if (Type == DatabaseType.OLEDB)
    {
        dbConnection = (DbConnection)new OleDbConnection();
    }
    else if (Type == DatabaseType.SQLSERVER)
    {
        dbConnection = (DbConnection)new SqlConnection();
    }
    
    string constring = "server=" + strIP + "," + strPort + ";database=" + strDataBase + ";uid=" + strID + ";pwd=" + strPW;
    // 연결정보 설정
    dbConnection.ConnectionString = constring;
    // 연결
    dbConnection.Open();
}

DbConnection 사용하는 방법을 간단하게 살펴보자면 DbConnection 역시 SqlConnection과 비슷합니다. SqlConnection때 한 것과 동일하게 DbConnection 객체를 생성하고 그 안에 ConnecitonString을 지정한다음 Open시켜주면 DB연결 끝.

 

본론으로 돌아와서 이제는 원래 원했던 SQLite 데이터베이스 연결 및 쿼리를 실행해보도록 합시다.

2. SQLite 데이터베이스 연결 및 쿼리 실행

이번 글에서는 SQLite를 다룰 예정인데 SQLite를 이용하기 위해서는 우선 .NET용 SQLite 어셈블리 모듈을 참조해야합니다. SQLite 공식홈페이지에서 다운 또는 NuGet패키지 관리에서 추가해주세요.

http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

 

System.Data.SQLite: Downloads Page

All downloadable packages on this web page that do not include the word "static" in their file name require the appropriate version (e.g. 2005, 2008, 2010, 2012, 2013, 2015, 2017) of the Microsoft Visual C++ Runtime Library, to be successfully installed on

system.data.sqlite.org

 

1) SQLite 데이터베이스 연결

using System.Data;
using System.Data.Common; // DbConnection
using System.Reflection; //Assembly
using System.Data.SQLite;

// 전역변수
//DB connection
DbConnection dbConnection = new DbConnection(); 		
// 라이브러리 어셈블리
Assembly _asmDB = null;

public int connect()
{
    try
    {
    	// SQLite의 dll이 있는 경로
     	string szExecutablePath = Path.GetDirectoryName(Application.ExecutablePath);
        _asmDB = Assembly.LoadFile(String.Format("{0}\\System.Data.SQLite.dll", szExecutablePath));
        dbConnection = (DbConnection)_asmDB.CreateInstance("System.Data.SQLite.SQLiteConnection");
    	
        string szDBFile = String.Format(@"{0}\{1}\{2}"
                        , szExecutablePath
                        , "Database"
                        , "sqlite.db");
                        
        // DB접속정보
        string constring = string.Format("Data Source={0};", szDBFile);
        dbConnection.ConnectionString = constring;
        // DB연결
        dbConnection.Open();

    }
    catch(Exception ex)
    {
    	dbConnection.Close();
    }
}

 

2) 쿼리 실행

public void createTable()
{
    try
    {

        // 테이블을 생성하는 쿼리문
        string sqlCreate = 
        	 string.Format(@"CREATE TABLE TEST_INFO (
                                        test_key int,
                                        test_nm nvarchar(200),  
                                        test_date nvarchar(8))
                                 ");
                          
        SQLiteCommand command = new SQLiteCommand(sqlCreate, (SQLiteConnection)dbConnection);
        int result = command.ExecuteNonQuery();
        
    }
    catch (Exception ex)
    {
    	Trace.WriteLine("ERROR createInsert : " + ex.ToString());
    	return;
    }
}
Comments