웹스쿨

Access DB 의 truncate, limit 본문

개인 프로젝트/C# 키움 주식 패턴 분석

Access DB 의 truncate, limit

마스터욱 2023. 3. 30. 01:55
반응형

Mysql 과는 다르게 Access DB에는

truncate, limit 가 없다.

limit 같은 경우에는 아래와 같이

 

SELECT TOP 1 * FROM stock_sign ORDER BY idx desc 

 

TOP 1 이렇게 1개만 뽑을수 있는것으로 확인했다. (역시 굴링이 형은 위대해~, 네이년 같은곳에는 검색해도 안나옴)

 

truncate 같은 경우에는 약간의 꼼수를 사용해야 한다

1. delete 로 전체 다 지운다.

2. 강제로 1row를 insert 한다. 이때 insert 를 할때 auto_increment 컬럼에 강제로 '0'을 넣는다.

3. 다시 delete 한다.

 

대충 아래와 같이 하면 된다.

                    connCmd.CommandText = "delete from stock_sign";
                    connCmd.ExecuteNonQuery();
 
                    connCmd.CommandText = "INSERT INTO stock_sign(idx) VALUES(0)";
                    connCmd.ExecuteNonQuery();
 
                    connCmd.CommandText = "delete from stock_sign";
                    connCmd.ExecuteNonQuery();

즉 delete 로 모두 비우고, 강제로 auto_increment 컬럼에 '0'을 넣음으로써 auto_increment 를 초기화 시키는 거다. 이것도 굴링이 형이 도와준거다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
            //하루가 지난 체결정보들 모두 삭제
            Dictionary<intstring> columns = new Dictionary<intstring>();
            columns[0= "sign_Ymd";
            Dictionary<intDictionary<stringstring>> list = database_select("SELECT TOP 1 * FROM stock_sign ORDER BY idx desc", columns);
            //MessageBox.Show(list[0]["sign_Ymd"]);
 
            if(list[0]["sign_Ymd"!= DateTime.Now.ToString("yyyy"+ DateTime.Now.ToString("MM"+ DateTime.Now.ToString("dd"))
            {
                //MessageBox.Show("하루가 지났넹");
                OleDbConnection conn = new OleDbConnection();
                OleDbCommand connCmd = new OleDbCommand();
                try
                {
                    conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + accFileName + ";Mode=ReadWrite;Jet OLEDB:Database Password=" + dbPasswd;
                    conn.Open();
                    connCmd.Connection = conn;
 
                    connCmd.CommandText = "delete from stock_sign";
                    connCmd.ExecuteNonQuery();
 
                    connCmd.CommandText = "INSERT INTO stock_sign(idx) VALUES(0)";
                    connCmd.ExecuteNonQuery();
 
                    connCmd.CommandText = "delete from stock_sign";
                    connCmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Exception 에러발생 : " + ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
cs

 


이 게시글은
https://webschool.kr/?v=board_view&board_key=5&idx=63
에서 작성한 글입니다. 소스코드의 경우 해당 블로그에서 이뿌게 노출이 되지 않을 수 있사오니, 위 링크로 들어오셔서 보시길 바랍니다.

반응형