White Whale Studio

[C# & MDB - 2] Insert, Update, Delete 본문

IT Engineering/C#.net

[C# & MDB - 2] Insert, Update, Delete

glorymind 2023. 2. 13. 15:34
반응형

[C# & MDB - 1] Connect & Select 포스팅에 이어 해당 포스팅에서는 Insert, Update, Delete를 살펴봅니다.

Insert 코드는 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void Insert()
{
    var con = new OleDbConnection(connStr);
    var cmd = new OleDbCommand();
    cmd.Connection = con;
    cmd.CommandText = "INSERT INTO TB_USER ([USER_ID], [EMAIL], [UPD_DATE])" +
    "values (@USER_ID, @EMAIL, @UPD_DATE);";                
    cmd.Parameters.AddWithValue("@USER_ID", hkInfo.USER_ID);
    cmd.Parameters.AddWithValue("@EMAIL", hkInfo.EMAIL);
    cmd.Parameters.AddWithValue("@UPD_DATE", DateTime.Now.ToString("yyyy-MM-dd"));
 
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
}
 
cs

지난번 포스팅과 다르게 using을 사용하지 않았는데요. using을 사용하는 구문은 자원해제는 자체적으로 알아서 해주는 장점이 있습니다.

필요에 따라서 편하게 사용하시면 됩니다.

Insert 구문은 위와 같이 CommandText에는 쿼리를 입력하고 @USER_ID와 같이 파라미터를 입력해주시면 됩니다.

Update 코드는 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void UpdateHotKeyInfo(HOTKEY_INFO hkInfo)
{
    using (var con = new OleDbConnection(connStr))
    {
        con.Open();
        var cmd = new OleDbCommand();
        cmd.Connection = con;
        cmd.CommandText = "UPDATE TB_HOTKEY SET [HOTKEY_NAME] = ?, [SHIFT_YN] = ?, [CNTL_YN] = ?" +
        ", [ALT_YN] = ?, [KEY] = ?, [KEY_VALUE] = ?, [IS_ENCRYPTED] = ?, [UPD_DATE] = ? WHERE ID = ?;";
        cmd.Parameters.AddWithValue("@HOTKEY_NAME", OleDbType.VarChar).Value = hkInfo.HOTKEY_NAME;
        cmd.Parameters.AddWithValue("@SHIFT_YN", OleDbType.Boolean).Value = hkInfo.SHIFT_YN;
        cmd.Parameters.AddWithValue("@CNTL_YN", OleDbType.Boolean).Value = hkInfo.CNTL_YN;
        cmd.Parameters.AddWithValue("@ALT_YN", OleDbType.Boolean).Value = hkInfo.ALT_YN;
        cmd.Parameters.AddWithValue("@KEY", OleDbType.VarChar).Value = hkInfo.KEY.ToString();
        cmd.Parameters.AddWithValue("@KEY_VALUE", OleDbType.VarChar).Value = hkInfo.IS_ENCRYPTED ? hkInfo.KEY_VALUE_ENC : hkInfo.KEY_VALUE;
        cmd.Parameters.AddWithValue("@IS_ENCRYPTED", OleDbType.Boolean).Value = hkInfo.IS_ENCRYPTED;
        cmd.Parameters.AddWithValue("@UPD_DATE", OleDbType.VarChar).Value = DateTime.Now.ToString("yyyy-MM-dd");
        cmd.Parameters.AddWithValue("@ID", OleDbType.Integer).Value = hkInfo.ID;                                        
        cmd.ExecuteNonQuery();
        con.Close();
    }
}
cs

Insert 구문과 차이점이 있다면 쿼리쪽 파라미터에는 ?를 넣고 실제 파라미터를 추후에 지정한다는 점입니다.

파라미터의 순서가 중요하니 꼭 지켜주어야합니다.

Delete 코드는 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
public void Delete(HOTKEY_INFO hkInfo)
{
    var con = new OleDbConnection(connStr);
    var cmd = new OleDbCommand();
    cmd.Connection = con;
    cmd.CommandText = "DELETE FROM TB_HOTKEY WHERE ID = ?;";                
    cmd.Parameters.AddWithValue("@ID", hkInfo.ID);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
}
cs

Update와 유사하게 파라미터 넘기는 방식은 유사합니다. 위와 같이 사용해주시면 됩니다.

다음 포스팅에서는 MDB 파일의 암/복호화에 대해 알아보겠습니다.

반응형
Comments