태현짱와우
10
2019-07-11 16:37:05
0
90

[VisualStudio][C#] 코드로 로컬DB 생성에 대하여


글이 좀 깁니다 맨 밑ㅇㅔ 한줄 요약 있어요 

안녕하세요, 공부하는 대학생입니다.

C# ( WPF )를 이용해 DB와 연결하여 학생정보를 저장하는 테스트 프로그램을 만들고 있습니다.

DB는 로컬DB를 사용하려고 합니다. ( 그냥 공부용입니다 )


위 사진과 같이 프로젝트 내에 mdf파일을 넣고 그 파일의 DB를 불러오는 형식입니다.

(왼쪽은 SQL 서버 개체 탐색기로 본 해당 mdf 파일입니다 )


혹여 저 LOCALDB.mdf 파일이 없을 때 새 mdf파일을 만들고자 했습니다.

그래서 먼저 테스트로 FFF.mdf 파일이 없으면 FFF.mdf 파일을 만드는 코드를 짰습니다.


void CreateTestDatabase(string databaseName)
{
    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString =
            @"Data Source=(LocalDB)\MSSQLLocalDB;Integrated Security=True;";
        conn.Open();
        //  디렉토리 이름 생성
        string mdfPath11 = System.IO.Path.Combine(Environment.CurrentDirectory, "FFF.MDF");

        System.IO.FileInfo fi = new FileInfo(mdfPath11);
        //  현재 디렉토리에 FFF.mdf 파일 있는지 조사
        if (fi.Exists)
            return;
        else
        {
            //  없으면 FFF라는 이름의 데이터베이스를 현재 디렉토리에 추가
            SqlCommand command = new SqlCommand(
                @"Create database FFF on (name = 'FFF', filename='" + mdfPath11+"');"
                , conn);
                    
            command.ExecuteNonQuery();
            System.Windows.MessageBox.Show("maked new one");
        }

        conn.Close();
    }
}

위와 같은 코드를 만들었는데 일단 처음 동작은 잘 합니다.

처음 실행한 경로에서 mdf파일이랑 ldf 랑 잘만들어졌어요.

같은 경로에서 실행하면 이미 있는 FFF.mdf 파일 인식하고 새로 안만드는 것 까지 확인했습니다.


그런데!

제가 생각한 건 로컬 DB이기 때문에 실행파일마다 FFF.mdf가 생성될거라 생각했거든요.

근데 아닌 것 같더라구요. 실행파일을 다른경로에서 실행하면 어김없이 터지더라구요.


이유를 알고봤더니

 

이미 데이터 베이스에 FFF가 존재한다는 겁니다.


그래서 SQL 개체 탐색기를 확인했더니

다른 로컬 DB처럼 경로마다 FFF가 생기는 것이 아닌, mdf파일만 경로에 있고 관리는 

로컬 DB 중앙에서 하는 것 같더군요




그래서 코드로 로컬 DB 생성할 때 따로 넣는 쿼리문 있나요? 위 프로젝트의 LOCALDB.mdf 처럼 말이에요



0
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.