제목 그대로다.
1. C#에서
2. 암호 설정 + connection string 에 암호낑궈넣기.
3. ms access 에 걸어놓은 암호를 코드로 변경/수정하는 거.
혹시나 해서 찾아보니 있네.
역시나 출처는 stackoverflow + MSDN 등등등 이다.
결론부터 말하면
ALTER DATABASE Password NEWPASSWORD OLDPASSWORD
쿼리문으로 mdb 파일에 암호를 걸 수 있다.
아래는 내가 작업하면서 실수했던 것들. 참고바람( 내 실수를 밟고 넘어가라!! )
1. connection string.
http://www.connectionstrings.com/ 이라는 사이트가 있다. 몰랐다.
각종 디비에 접속하는 access string 을 모아놓은 거임.
1.1. 디비 암호 없는 경우 접속문자열은
mConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=너님mdb파일경로명파일명"
이다.
1.2. 디비 암호 있을때 접속문자열은
mConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Jet OLEDB:Database Password=너님디비암호;Data Source=C:\\temp\\파일명.mdb"
1.2.1. "Password=암호" 가 아니라, "Database Password=암호" 다. 중간에 Database 문자열이랑 스페이스 빼 먹지 말것.
1.2.2. "OLEDB" 가 아니라 "Jet OLEDB" 다 . 빼먹지 말 것.
2. "Persist Security Info=False" 는 있어도 되고 없어도 된다.
"Persist Security Info=True" 로 해도 상관없다. 찾아보니 보안 정책 중 하나이긴 한데, 별 영향 안 끼치는 듯.
3. ALTER TABLE PASSWORD 할 때는, "배타적 모드" 로 열어야 한다.
[ 베지터 아니다. Exclusive Mode 다. ]
이건 MS Access 라서 그런거 같은데, 원래 mdb 파일에 암호 걸 때는, mdb 파일 열 때 "단독 모드" 열어야 된다. 그냥 열면 암호 못 바꾼다.
마찬가지로, mdb 파일 암호를 코드로 변경하려면, 똑같이 DB Connection String 에 Exclusive mode 를 걸어줘야 한다.
예를 들면,
string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Jet OLEDB:Database Password=너님암호;Mode=Share Exclusive;Data Source=엠디비경로명파일파일";
와 같다.
이건 암호 바꾸어 줄 때만 하면 되니까, 실제 프로그램에서 작성할 때는
3.1. 암호 변경용 connection
3.2. 일반 DB Read/Write/Update 용 connection
을 두개 유지하자.
4. ALTER DATABASE Password NEWPASSWORD OLDPASSWORD 에서, 앞 패스워드가 새거다.
ALTER DATABASE Password NEWPASSWORD OLDPASSWORD
다. 절대로 순서를 착각하지 말자.
5. 코드에서 ALTER TABLE 로 암호 설정할 때는, 영문자소문자 + 숫자만 가능하다.
즉, [a-z0-9]만 된다. 이거 좀 의외인데, 삽질 많이 한 결과 알아낸 것. 이 이야기는 어디에도 없더라.
[ 동물도 삽질이 가능하다. ]
이게 조금 설명이 필요한데, 아래와 같다.
5.1. MS Access 프로그램에서 mdb 를 열어서 암호를 설정하면, 대문자소문자특수문자 다 잘 들어간다.
5.2. MS Access 프로그램에서 mdb 암호를 특수문자등등 넣어서 수동 설정한 다음, 코드로 connection string 에 password 설정하고 접속하면, 접속된다.
5.3. 개발하려는 프로그램에서 코드로 mdb 암호를 대문자나 특수문자로 설정하려면, 설정이 거부된다.
ALTER TABLE PASSWORD
이상. 다른사람들이 참고되길 빈다.
'프로그램 > C#' 카테고리의 다른 글
C# 의 combobox 에서, 드롭다운의 선택한 값을 받을수 없을 때. (3) | 2016.04.13 |
---|---|
ms access 에서 ISNULL() 쿼리함수. (0) | 2016.03.31 |
C#에서, webbrowser 의 documentText 갱신 방법. (0) | 2016.03.05 |
gridview 의 button 의 생성 타이밍이 gridview.Add() 가 아니다. (0) | 2016.01.20 |
[]datagridview (0) | 2016.01.18 |