블로그 이미지
따시쿵

calendar

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

Notice

2015. 7. 1. 14:27 C# with LINQ to SQL

이번 포스트에서는 datagridview control 에 데이타를 select, insert, update, delete 시키는 모든 연산을 sql db 의 northwind db를 이용해서 작업해 보도록 하겠습니다.

 

일단은 sql 2012 의 norhwind db를 다음의 사이트에서 다운로드를 받아서 설치를 합니다.

http://businessimpactinc.com/install-northwind-database/

 

최종적인 결과 화면입니다.

 

1. LINQ to SQL 클래스 만들기

 

프로젝트 선택 => [추가] => [새항목] => [데이타] =>[LINQ to SQL 클래스] 선택하고 이름을 "northwind" 라 입력을 합니다.

 

그리고, 테이블을 모두 drag & drop 으로 끌어다 좌측 윈도우에 위치 시키며, 스토어 프로시저를 끌어다 오른쪽 창에 위치 시킵니다.

 

이제, northwind.dbml 파일 하단에 있는 northwind.designer.cs 파일을 열고 확인 해 보면,

맨 상단에 northwindDataContext 클래스가 있으며 하단으로 테이블명으로 되어 있는 클래스들을 확인 할 수 있습니다.

 

이번 예제에서는 Customers 테이블에 연산하는 것을 예시로 보입니다.

 

2. select

 

[Get Data] 버튼을 클릭했을 시 보이는 method, 모든 데이타를 가져옵니다.

            northwindDataContext dbContext = new northwindDataContext();

            dataGridView1.DataSource = dbContext.Customers;

 

3. insert

 

[Insert] 버튼 클릭시 작동하는 method 입니다.

            using (northwindDataContext dbContext = new northwindDataContext())
            {
                var userInfo = dbContext.Customers.Where(u => u.CustomerID == textCustomerID.Text);
                if (userInfo.Count() > 0)
                {
                    MessageBox.Show("[CustomerID] 가 중복입니다. 다른 것으로 변경하시기 바랍니다.", "에러", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    Customers customer = new Customers
                    {
                        CustomerID = textCustomerID.Text,
                        CompanyName = textCompanyName.Text,
                        ContactName = textContactName.Text,
                        ContactTitle = textContactTitle.Text,
                        Address = textAddress.Text,
                        City = textCity.Text,
                        Region = textRegion.Text,
                        PostalCode = textPostalCode.Text,
                        Country = textCountry.Text,
                        Phone = textPhone.Text,
                        Fax = textFax.Text
                    };

                    dbContext.Customers.InsertOnSubmit(customer);
                    dbContext.SubmitChanges();

                    GetData();
                }
            }

 

 

4. update

 

[Update] 버튼 클릭시 작동하는 method 입니다.

            using (northwindDataContext dbContext = new northwindDataContext())
            {
                Customers customer = dbContext.Customers.SingleOrDefault(x => x.CustomerID == textCustomerID.Text);
                customer.CompanyName = textCompanyName.Text;
                dbContext.SubmitChanges();                
            }

            GetData();

 

 

5. delete

 

[Delete] 버튼 클릭시 작동하는 method 입니다.

            using (northwindDataContext dbContext = new northwindDataContext())
            {
                try
                {
                    Customers customer = dbContext.Customers.SingleOrDefault(x => x.CustomerID == textCustomerID.Text);
                    dbContext.Customers.DeleteOnSubmit(customer);
                    dbContext.SubmitChanges();
                }
                catch(ArgumentNullException ex)
                {
                    MessageBox.Show(ex.Message, "에러", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            GetData();

 

 

 

전체 소스 

MyLINQ9.zip

 

posted by 따시쿵