회원테이블(회원번호) - 작물테이블, 다이어리테이블, 농사용어테이블

이렇게 크게 3개의 큰 테이블이 회원번호를 외래키로 사용하고있고

이 3개의 테이블은 외래키로 사용하는 회원번호와 다른 정보들을 합쳐서 기본키를  많은  다른 하위 테이블로 뿌려지고 있다.

그래서 회원탈퇴를 할 경우 관계를 생각해서 삭제해야되는데(관계를 맺었을 경우)

 만약 키를 가져다 쓰고있는 테이블보다 먼저 상위에 있는

테이블에서 삭제를 할 경우 관계로 인한 오류가난다.

그래서 하위테이블부터 삭제해 나가면서 상위까지 올라가야 한다.

프로시저 쿼리에는 회원번호 한개만 받았으므로 받은 회원번호 하나가지고 그와 연관된 모든 것들을 삭제하면된다.

예를 들어
delete DIARY_GROWING from DIARY where @MEM_NUM = DIARY.Mem_Num and DIARY_GROWING.D_Number(다이어리에 기본키를 가져다쓰는 외래키) = DIARY.Number(기본키)

위와 같이 하면 DIARY_GROWING 테이블에서 DIARY에 몇번 회원정보들이 다 날라 갈것이다. 이렇게

JOIN 연산을 통하여 하나하나 삭제하면된다.

당연히 위에처럼 하위테이블블 데이터들을 날렸으면 상위인 DIARY테이블에 회원정보도 날려주면 된다.

처음에 delete CROPS from CROP_ACCOUNT, aaa, bbb, ccc, ddd, eee where @MEM_NUM = CROPS.Mem_Num and ..........이런식으로 하여서 한번에 CROPS에 관련된 테이블을 날릴수 없나해서 시도해보았지만 안되어서

할수없이 테이블 하나당 한줄씩 추가해서 날려주었다.


'.NET > ADO.NET' 카테고리의 다른 글

특정 행 복사하기  (0) 2010.08.06
내장 프로시저  (0) 2010.08.04
회원탈퇴시 모든정보 날리기  (0) 2010.07.26
다른컴퓨터로 DB 복사  (0) 2010.07.12
내장 프로시저(사용법)  (0) 2010.07.10
DB에 이미지 저장 / 로드 하기  (0) 2010.06.18
Posted by 아몰라

댓글을 달아 주세요


시나리오

DB에서 어떠한 값들을 가져오는데

가져올때 COUNT에 맞춰서 컨트롤을 증가시켜서 새로운 창을 띄운다.


Crop_Temper();  //쿼리에서 값 가져오기
ColumnDefine(); //열 생성
RowDefine();    //로우 생성
AddLine();      //동적으로 컨트롤 생성
ButtonAdd();    //버튼생성



1.
Crop_Temper() 에서 어떠한 컨트롤 생성할때 필요한 값들을 가져온다. 여기에서 가져온 COUNT만큼 Row의

갯수를 증가시킬것이다.


2.
        private void ColumnDefine() //열을 증가시킨다.
        {          
            ColumnDefinition column1 = new ColumnDefinition();
            column1.MinWidth = 100;
            ColumnDefinition column2 = new ColumnDefinition();
            column2.MinWidth = 150;

            MainGrid.ColumnDefinitions.Add(column1);
            MainGrid.ColumnDefinitions.Add(column2);

        }

3.
        private void RowDefine() //행을 추가한다.
        {
            for (int i = 0; i <= Temper_List.Temper_Name.Count; i++)  //DB에서 가져온 값갯수만큼 행을 만든다.
            {
                RowDefinition row1 = new RowDefinition();
                row1.MinHeight = 30;                               
                MainGrid.RowDefinitions.Add(row1);               
            }           
        }

4.
        private void AddLine() //입력창 추가
        {
            for (int i = 0; i < Temper_List.Temper_Name.Count; i++) 
            {       
//여기서는 행과 열에 맞게 라벨과 텍스트박스를 추가시킨다.

                Label lbTest1 = new Label();
                lbTest1.Content = Temper_List.Temper_Name[i].ToString();
                lbTest1.FontSize = 12;
                lbTest1.HorizontalAlignment = HorizontalAlignment.Center;
                lbTest1.VerticalAlignment = VerticalAlignment.Center;   

                Grid.SetRow(lbTest1, i);
                Grid.SetColumn(lbTest1, 0);
                MainGrid.Children.Add(lbTest1);

                TextBox tbTest1 = new TextBox();
                tbTest1.TextAlignment = TextAlignment.Center;
                tbTest1.VerticalContentAlignment = VerticalAlignment.Center;
                Grid.SetRow(tbTest1, i);
                Grid.SetColumn(tbTest1, 1);
               MainGrid.Children.Add(tbTest1);
            }           
        }

5. 버튼도 위와 같은 식으로 추가한다.



위와같이 했다면 아래와 같이 창이 뜨게 될것이다.
DB에서 가져오는 값들이 다름에 따라 창들도 동적으로 변한다.


Posted by 아몰라

댓글을 달아 주세요

원래는 해당 데이터베이스를 마우스로 우클릭하면 데이터베이스 복사 항목이 있는데

잘되지않아서 꼼수로 해보았다~~프로그램은 sql server 2005를 사용하였다.

1. 먼저 원본컴퓨터에서 Sql 2005를 키고 접속하여 백업시킬 데이터베이스를 마우스로 선택하여 우클릭하면 복원이라는
  항목이 있다. 클릭한다.



2.백업할 위치를 선택하고 확인을 눌른다. 그러면 백업이 된다.


3.방금 백업한 위치에 .bak 파일을 복사하여 복사할 다른 컴퓨터로 옮긴다.
  그리고 해당 컴퓨터에서 sql 2005에 접속하여 데이터베이스를 마우스로 우클릭 한 다음 데이터베이스 복원을 눌른다.


4.장치를 선택하고 백업할 파일을 찾는다.






5. 백업할 셋을 선택하고 확인버튼을 누른다.
 


6. 접속해보면 DB가 생긴걸 볼 수 있다.

'.NET > ADO.NET' 카테고리의 다른 글

내장 프로시저  (0) 2010.08.04
회원탈퇴시 모든정보 날리기  (0) 2010.07.26
다른컴퓨터로 DB 복사  (0) 2010.07.12
내장 프로시저(사용법)  (0) 2010.07.10
DB에 이미지 저장 / 로드 하기  (0) 2010.06.18
DB모델링  (0) 2010.05.28
Posted by 아몰라

댓글을 달아 주세요



1. 내부 스칼라변수 선언

ALTER PROCEDURE INSERT_CROP_BIONAME 
 (
 @CROP_NAME varchar(250), 
 @MEM_NUM int,
 @BIO_NAME varchar(250) 
 )
 
AS

declare @CROP_NUM int   - 이렇게 선언한다. 외부와 직접적인 상관없이 프로시저 내부에서 어떠한
declare @RESULT int          연산이나 처리를 해서 외부에 값을 줄 때 유용하게 사용 할 수 있다.

 select @CROP_NUM = Number from CROPS where  @CROP_NAME = Crop_Name and @MEM_NUM = Mem_Num
 
 select @RESULT = count(*) from CROP_ACCOUNT where @CROP_NUM = Crop_Number
 
 if(@RESULT = 0)
 begin
  insert into CROP_ACCOUNT values(@CROP_NUM ,@BIO_NAME, NULL , NULL)
 end
 else
 begin
  update CROP_ACCOUNT set Crop_Biomial_Name = @BIO_NAME where @CROP_NUM = Crop_Number
 end
  
  
 RETURN




2. 스칼라 변수 초기화

declare @TEST int

SET @TEST  =  0     - 위와 같이 어떠한 변수가 생기면 어떠한 값을 초기화 시키고싶을때 이렇게 한다.d


3. 반복문 사용법

ALTER PROCEDURE WEATHER_SAVE 
 (
 @City varchar(250) 
 )
 
AS

declare @i int
declare @j int


set @i = 2007
set @j = 1

while (@i <= 2009)
begin
 while(@j <=12)
  begin
   insert into WEATHER_INFO values(@City, @i, @j , NULL, NULL, NULL, NULL, NULL)
   set @j = @j + 1    - 보는 바와 같이 이렇게 SET은 초기화뿐만 아니라 이러한 연산을 할 때도 사용된다.
  end
set @j = 1
set @i = @i + 1
end


 RETURN









 

'.NET > ADO.NET' 카테고리의 다른 글

회원탈퇴시 모든정보 날리기  (0) 2010.07.26
다른컴퓨터로 DB 복사  (0) 2010.07.12
내장 프로시저(사용법)  (0) 2010.07.10
DB에 이미지 저장 / 로드 하기  (0) 2010.06.18
DB모델링  (0) 2010.05.28
SqlDataAdapter  (0) 2010.04.02
Posted by 아몰라

댓글을 달아 주세요

이전버튼 1 이전버튼