Data Provider 데이터 공급자
DB접속 / 읽기/ 조작에 관여
**연결형 중요한 클래스**
sqlConnection
sqlCommand
sqlDataReader -> 데이터 뷰어
Data Set(데이터 셋)
비연결형의 메모리형 데이터 베이스
**비연결형 중요한 클래스**
sqlConnection : 공통점 ->
DataSet
DataTable
DataAdapter DataSet에 데이터 저장
상속 계층구조
System.Data.SqlClient.SqlConnection
SqlConnection 연결
*생성자를 통해 연결
SqlConnection(string)
*생성자 + ConnecrionString
SqlConnection()
*연결문자열 만들기
-대소문자 구분하지 않음
-MSDN참조
-기본적인 연결 문자열
SqlConnection 연결문자열
data source 또는 server
data source = (localhost)\SQLEXPRESS
integrated security =false -> 사용자 id pw 사용하는 경우
integrated security =true -> 윈도우즈 인증(잘 안쓴다)
기본적인 연결 문자열 -> SqlConnection(string)생성자 string 변수에 들어가는 값
"server=.\\SQLEXPRESS;database=test,uid=sa;pwd=12345;
연결이 되면 public override void Open() 열기 public override void Close() 닫기
ConnectionState State{ get; }
enum 상태로 open close broken connecting 등이 들어가 있다.
using ()
{
}
이거는 파일 입출력 close를 깜빡해도 자동으로 끊어 준다.
SqlCommand cmd = new SqlCommand();
try
{
DataTable dataTable = new DataTable();
DataSet dt = new DataSet(); //데이터 테이블의 윗 계념인가?
cmd.Connection = new SqlConnection(COMMON.ConstValues.System.DB._Conn);
//여기까지가 디비 연결
cmd.CommandText = "프로시저 명!";
cmd.CommandType = CommandType.StoredProcedure;
//프로시저 가져오는거
//제품구분
cmd.Parameters.Add(new SqlParameter("@파라메타 이름", Method.ChkDbNull(this.TxtBox_ProDVCD.EditValue)));
//품목구분
cmd.Parameters.Add(new SqlParameter("@파라메타 이름", Method.ChkDbNull(this.TxtBox_Pro_ItemCD.EditValue)));
//소분류
cmd.Parameters.Add(new SqlParameter("@파라메타 이름", Method.ChkDbNull(this.TxtBox_Pro_SmCD.EditValue)));
//제품코드
cmd.Parameters.Add(new SqlParameter("@파라메타 이름", Method.ChkDbNull(this.TxtBox_ProCD.EditValue)));
//거래처
cmd.Parameters.Add(new SqlParameter("@파라메타 이름", Method.ChkDbNull(this.TxtBox_Find_CustomerCD.EditValue)));
cmd.Connection.Open();
SqlDataAdapter adt = new SqlDataAdapter();
adt.Fill(dataTable);
this.Grid_List.DataSource = dataTable;
DB
저장 프로시저란?
저장 프로시저 또는 스토어드 프로시저는 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. 데이터베이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것으로, 영구저장모듈이라고도 불린다. 위키백과
프로시저로 하나의 큰 함수를 만들어 변경 없이 지속적으로 당겨 쓸 수 있다.
GETDATE()의 경우 기본 제공 함수로 년도 날짜 시간 초까지 나오는 함수이다.
1. sql command 선언
2. try 문
3. 데이터 담을 Datatable 선언
4. cmd.connection = new sqlconnection(common.constvalues.system.DB._conn)
5. cmd.commandtext = "프로시저명"
6. cmd.commandtype =commandType.storeprocdure
7. 파라미터 작성 cmd.parameters.add(new sqlparameter("컬럼명",값)
8.cmd.connection.open()
9.안정화 시켜주는 거라고 생각하자 . sqldataadapter dpt =new sqldataadapter(cmd)
10.안정화 된거를 datatable에 올려주기 dpt.Fill(datatable)
devexpress formatconditions
엑셀 참조시
C#에서 엑셀을 연동하는데 Microsoft.Office.Interop.Excel이 필요하다더군요.
using Microsoft.Office.Interop.Excel;
그런데 자꾸만 Office 부분에 빨간 줄이 들어옵니다
참조 관리자에서 COM -> Microsoft Excel 14.0 Object Liberary 이걸 찾아야합니다.
이후 엑셀 코딩은 아래를 참고해서 진행하면 된다.
private DataTable ReadExcelData(string path)
{
DataTable dt = new DataTable();
dt.Columns.Add("업체구분", typeof(string));
dt.Columns.Add("거래처명", typeof(string));
dt.Columns.Add("대표자명", typeof(string));
dt.Columns.Add("사업자", typeof(string));
dt.Columns.Add("품목1", typeof(string));
dt.Columns.Add("품목2", typeof(string));
dt.Columns.Add("품목3", typeof(string));
dt.Columns.Add("사업자번호", typeof(string));
dt.Columns.Add("생년월일", typeof(string));
dt.Columns.Add("업종", typeof(string));
dt.Columns.Add("업태", typeof(string));
dt.Columns.Add("농가", typeof(string));
dt.Columns.Add("공선회", typeof(string));
dt.Columns.Add("GAP농가", typeof(string));
dt.Columns.Add("은행명", typeof(string));
dt.Columns.Add("계좌번호", typeof(string));
dt.Columns.Add("유형", typeof(string));
dt.Columns.Add("국가명", typeof(string));
dt.Columns.Add("화폐명", typeof(string));
dt.Columns.Add("우편번호", typeof(string));
dt.Columns.Add("기본주소", typeof(string));
dt.Columns.Add("나머지주소", typeof(string));
dt.Columns.Add("담당자명", typeof(string));
dt.Columns.Add("핸드폰번호", typeof(string));
dt.Columns.Add("전화번호", typeof(string));
dt.Columns.Add("팩스번호", typeof(string));
dt.Columns.Add("이메일", typeof(string));
dt.Columns.Add("비고", typeof(string));
Excel.Application excelApp = null;
Excel.Workbook wb = null;
Excel.Worksheet ws = null;
try
{
excelApp = new Excel.Application();
wb = excelApp.Workbooks.Open(path);
ws = wb.Worksheets.get_Item(1) as Excel.Worksheet;
Excel.Range rng = ws.UsedRange;
object[,] data = rng.Value;
for (int r = 2; r <= data.GetLength(0); r++)
{
if (Convert.ToString(data[r, 1]).Trim().Equals(""))
continue;
DataRow dr = dt.NewRow();
dr["업체구분"] = Convert.ToString(data[r, 1]).Trim();
dr["거래처명"] = Convert.ToString(data[r, 2]).Trim();
dr["대표자명"] = Convert.ToString(data[r, 3]).Trim();
dr["사업자"] = Convert.ToString(data[r, 4]).Trim();
dr["품목1"] = Convert.ToString(data[r, 5]).Trim();
dr["품목2"] = Convert.ToString(data[r, 6]).Trim();
dr["품목3"] = Convert.ToString(data[r, 7]).Trim();
dr["사업자번호"] = Convert.ToString(data[r, 8]).Trim();
dr["생년월일"] = Convert.ToString(data[r, 9]).Trim();
dr["업종"] = Convert.ToString(data[r, 10]).Trim();
dr["업태"] = Convert.ToString(data[r, 11]).Trim();
dr["농가"] = Convert.ToString(data[r, 12]).Trim();
dr["공선회"] = Convert.ToString(data[r, 13]).Trim();
dr["GAP농가"] = Convert.ToString(data[r, 14]).Trim();
dr["은행명"] = Convert.ToString(data[r, 15]).Trim();
dr["계좌번호"] = Convert.ToString(data[r, 16]).Trim();
dr["유형"] = Convert.ToString(data[r, 17]).Trim();
dr["국가명"] = Convert.ToString(data[r, 18]).Trim();
dr["화폐명"] = Convert.ToString(data[r, 19]).Trim();
dr["우편번호"] = Convert.ToString(data[r, 20]).Trim();
dr["기본주소"] = Convert.ToString(data[r, 21]).Trim();
dr["나머지주소"] = Convert.ToString(data[r, 22]).Trim();
dr["담당자명"] = Convert.ToString(data[r, 23]).Trim();
dr["핸드폰번호"] = Convert.ToString(data[r, 24]).Trim();
dr["전화번호"] = Convert.ToString(data[r, 25]).Trim();
dr["팩스번호"] = Convert.ToString(data[r, 26]).Trim();
dr["이메일"] = Convert.ToString(data[r, 27]).Trim();
dr["비고"] = Convert.ToString(data[r, 28]).Trim();
dt.Rows.Add(dr);
}
wb.Close(true);
excelApp.Quit();
return dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "경고!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return null;
}
finally
{
ReleaseExcelObject(ws);
ReleaseExcelObject(wb);
ReleaseExcelObject(excelApp);
}
}
'C#' 카테고리의 다른 글
C# 기초 문법 - 배열 정렬 (0) | 2023.03.09 |
---|---|
C# -용어정리/VS2019설치/C#프로그래밍 기초(0520) (0) | 2023.03.02 |
C# 개발 - 패킷 단위 자르는 방법 공부해서 Wireshark · Go Deep 유사품 만들기 (0) | 2023.03.02 |
C# 문법- 클래스 생성자 this 사용법 공부 (0) | 2023.03.02 |
C# 문법 -STACK<T>구현 (0) | 2023.03.02 |
C# 문법 -Queue<T>의 구현 (0) | 2023.03.02 |