참고 : 코드는 호출 프로 시저 매개 변수 저장되어있는 것을 제외하고, 저와 다른 오라클 툴에 직접 SQLServer에 도구를 복사를 호출 할 수 있습니다
/// <요약> /// 기반 .NET (4.0 이전 버전과 호환) 개발 도구 SQLServerDBHelper /// <파라> 저자 : 수줍은 개구리 </ 파라> /// <파라> 시간 : 2019년 12월 6일 </ 파라> /// </ 요약> 공공 정적 클래스 SQLServerDBHelper { /// <요약> SQL 문을 실행 /// 그 반환 DataTable을 /// </ 요약> /// <PARAM NAME = "SQL"> SQL 語句 </ PARAM> /// <매개 변수 이름 = "DBURL"> 데이터베이스 링크 주소 </ PARAM> /// <리턴> </ 반품> 공공 정적 DataTable을 GetDataTableBySQL (문자열 SQL 문자열 DBURL) { // 연결 객체 데이터베이스 연결 문자열과 결합 받기 도록 SqlConnection CONN = 새도록 SqlConnection (DBURL); conn.Open (); // 자원 열기 객체 데이터베이스 작업을 얻기 // SqlCommand를 cmd를 conn.CreateCommand = (); 시험 { cmd.CommandText = SQL; SqlDataAdapter를 어댑터 = 새로운 SqlDataAdapter를 (cmd를) DataTable에 새로운 데이터 테이블의 DataTable을 () =; dataTable.TableName = "데이터 세트"; adapter.Fill (데이터 테이블); cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 데이터 테이블을 반환; } 캐치 (예외 예) { cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 예를 던져; } } /// <요약> /// 비 쿼리의 SQL 문을 실행 /// </ 요약> /// <PARAM NAME = "SQL"> SQL 語句 </ PARAM> /// <매개 변수 이름 = "DBURL"> 데이터베이스 링크 주소 </ PARAM> /// <리턴> </ 반품> 공공 정적의 INT GetNonQueryBySQL (문자열 SQL, 문자열 DBURL) { // 연결 객체 데이터베이스 연결 문자열과 결합 받기 도록 SqlConnection CONN = 새도록 SqlConnection (DBURL); conn.Open (); // 자원 열기 객체 데이터베이스 작업을 얻기 // SqlCommand를 cmd를 conn.CreateCommand = (); 시험 { cmd.CommandText = SQL; INT NUM = cmd.ExecuteNonQuery (); cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 확실히 반환; } 캐치 (예외 예) { cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 예를 던져; } } /// <요약> /// 실행 여러 SQL 문은 데이터베이스 트랜잭션을 구현합니다. /// </ 요약> /// <PARAM NAME = "SQLStringList"> 여러 SQL 문 </ PARAM> /// <매개 변수 이름 = "BDUrl"> 데이터베이스 링크 주소 </ PARAM> 공공 정적의 INT GetNonQueryByManySQL (ArrayList를 SQLStringList, 문자열 BDUrl) { 사용 (도록 SqlConnection CONN = 새도록 SqlConnection (BDUrl)) { conn.Open (); SqlCommand를 cmd를 새로운하는 SqlCommand = (); cmd.Connection = CONN; SqlTransaction TX = conn.BeginTransaction (); cmd.Transaction = TX; 시험 { INT NUM = 0; 경우 (나는 <SQLStringList.Count; INT 나 0 = I ++) { 문자열 SQL = SQLStringList [I]로 .toString (); // 가져 오기 SQL 문 경우 (SQL.Trim (). 길이> 1) { cmd.CommandText = SQL; NUM = cmd.ExecuteNonQuery (); } tx.Commit (); //은 트랜잭션을 커밋 cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 } 반환 NUM은; //은 실행 결과의 수를 반환 } 캐치 (SQLEXCEPTION E) { tx.Rollback (); // 트랜잭션 롤백 새로운 예외 (E.Message)를 던져; } } } /// <요약> // 저장된 복귀를 하나의 결과 세트를 호출 /// <파라> OBJ 용도 : 새로운 V_DATA = {값 v_data1 = VALUE1} </ 파라> /// <파라> 주 : (OBJ)는, 파라미터 명 V_DATA에 저장된 값 값에 대응하는 </ 파라> 요구되지 않는 출력 파라미터를 정의의 SQLServer에는 커서가 없다 /// </ 요약> /// <PARAM NAME = "저장소 이름"> 스토리지 이름 </ PARAM> /// <매개 변수 이름 = "DBURL"> 데이터베이스 링크 주소 </ PARAM> /// <매개 변수 이름 = "OBJ"> 파라미터 객체 저장 </ PARAM> /// <리턴> </ 반품> 공공 정적 DataTable을 GetDataTableByStorageName (문자열 저장소 이름, 문자열 DBURL, 객체 OBJ) { // 연결 객체 데이터베이스 연결 문자열과 결합 받기 도록 SqlConnection CONN = 새도록 SqlConnection (DBURL); conn.Open (); // 자원 열기 객체 데이터베이스 작업을 얻기 // SqlCommand를 cmd를 conn.CreateCommand = (); 시험 { cmd.CommandText = 저장소 이름; // 저장 이름 cmd.CommandType는 CommandType.StoredProcedure를 =; PropertyInfo [] = obj.GetType 성질 () GetProperties를 (BindingFlags.Instance | BindingFlags.Public); // 객체 필드 명과 값을 가져 경우 (나는 <properties.Length; INT 나 0 = I ++) {// 입력 유형 및 값을 설정 cmd.Parameters.Add (특성 [I] .NAME, SqlDbType.NVarChar) .Direction = ParameterDirection.Input; cmd.Parameters [등록 [I] .NAME] .Value 속성 = [I] .GetValue (OBJ, NULL); // 賦值 } DataTable에 새로운 데이터 테이블의 DataTable을 () =; SqlDataAdapter를 ODA = 새로운 SqlDataAdapter를 CMD (); oda.Fill (데이터 테이블); dataTable.TableName = "데이터 세트"; cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 데이터 테이블을 반환; } 캐치 (예외 예) { cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 예를 던져; } } /// <요약> // 저장된 반환 문자열 문자열 정보를 호출 (마지막 위치가 문자열 형식 문자이어야 위치가 되돌릴 수 없습니다) /// <파라> OBJ 使用 方法 : 새로운 V_DATA = {값 v_data1 = 값 1, out_string = ""} </ 파라> /// <파라> 주 : OBJ가 출력 매개 변수에 대한 값을 입력 할 필요가 없다 out_string 값, 값에 대응하는 파라미터 이름 V_DATA에 저장된 </ 파라> /// </ 요약> /// <PARAM NAME = "저장소 이름"> </ PARAM> /// <PARAM NAME = "DBURL"> </ PARAM> /// <PARAM NAME = "OBJ"> </ PARAM> /// <리턴> </ 반품> 공공 정적 문자열 GetStringDataByStorageName (문자열 저장소 이름, 문자열 DBURL, 객체 OBJ) { 도록 SqlConnection CONN = 새도록 SqlConnection (DBURL); conn.Open (); 객체 데이터베이스 작업을 얻기 // SqlCommand를 cmd를 conn.CreateCommand = (); 시험 { cmd.CommandText = 저장소 이름; // 저장 이름 cmd.CommandType는 CommandType.StoredProcedure를 =; PropertyInfo [] = obj.GetType 성질 () GetProperties를 (BindingFlags.Instance | BindingFlags.Public); // 객체 필드 명과 값을 가져 경우 (나는 <properties.Length; INT 나 0 = I ++) { 경우 (I == (properties.Length - 1)) {// 출력값과 타입을 설정 cmd.Parameters.Add ( "@"속성 + [I] .NAME, SqlDbType.NVarChar, short.MaxValue) .Direction = ParameterDirection.Output; cmd.Parameters [ "@"속성 + [I] .NAME] .Value = DBNull.Value // 賦值 } 그밖에 {// 입력 유형 및 값을 설정 cmd.Parameters.Add ( "@"속성 + [I] .NAME, SqlDbType.NVarChar) .Direction = ParameterDirection.Input; cmd.Parameters [ "@"속성 + [I] .NAME] .Value 속성 = [I] .GetValue (OBJ, NULL); // 賦值 } } cmd.ExecuteNonQuery (); 스트링 메시지 cmd.Parameters = [ "@"+ 속성 [properties.Length - 1] .NAME] .Value.ToString (); // 반환하는 값을 얻을 cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 메시지를 반환; } 캐치 (예외 예) { cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 예를 던져; } } /// <요약> // 저장된 정보를 전화 및 DataTable을 문자열 문자열 데이터 테이블 반환 (출력 문자열의 마지막 하나를, 위치가 되돌릴 수 없습니다) /// <파라> OBJ 使用 方法 : 새로운 V_DATA = {값 v_data1 = 값 1, out_string = ""} </ 파라> /// <파라> 주 : (OBJ)는 파라미터 이름 V_DATA에 저장되고, 대응하는 값으로 값은 입력 값이 필요하지 출력 파라미터 out_string 때문에 SQLServer에있는 커서 출력 매개 </ 파라>을 정의 할 필요가 없다 /// </ 요약> /// <PARAM NAME = "저장소 이름"> 스토리지 이름 </ PARAM> /// <매개 변수 이름 = "DBURL"> 데이터베이스 링크 주소 </ PARAM> /// <매개 변수 이름 = "OBJ"> 파라미터 객체 저장 </ PARAM> /// <매개 변수 이름 = "데이터 테이블"은> 결과 집합 </ PARAM>를 반환 /// <리턴> </ 반품> 공공 정적 문자열 GetStringAndDataTableByStorageName (문자열 저장소 이름, 문자열 DBURL, 객체 OBJ, DataTable에 데이터 테이블 아웃) { // 연결 객체 데이터베이스 연결 문자열과 결합 받기 도록 SqlConnection CONN = 새도록 SqlConnection (DBURL); conn.Open (); // 자원 열기 객체 데이터베이스 작업을 얻기 // SqlCommand를 cmd를 conn.CreateCommand = (); 시험 { cmd.CommandText = 저장소 이름; // 저장 이름 cmd.CommandType는 CommandType.StoredProcedure를 =; PropertyInfo [] = obj.GetType 성질 () GetProperties를 (BindingFlags.Instance | BindingFlags.Public); // 객체 필드 명과 값을 가져 경우 (나는 <properties.Length; INT 나 0 = I ++) { 경우 (I == (properties.Length - 1)) {// 출력값과 타입을 설정 cmd.Parameters.Add (특성 [I] .NAME, SqlDbType.NVarChar, short.MaxValue) .Direction = ParameterDirection.Output; cmd.Parameters [등록 [I] .NAME] .Value = DBNull.Value // 賦值 } 그밖에 {// 입력 유형 및 값을 설정 cmd.Parameters.Add (특성 [I] .NAME, SqlDbType.NVarChar) .Direction = ParameterDirection.Input; cmd.Parameters [등록 [I] .NAME] .Value 속성 = [I] .GetValue (OBJ, NULL); // 賦值 } } DataTable의 DT 신규의 DataTable을 () =; SqlDataAdapter를 ODA = 새로운 SqlDataAdapter를 CMD (); oda.Fill (DT); dt.TableName = "데이터 세트"; 데이터 테이블 (DT) = // 데이터의 결과 세트를 리턴 // 문자열의 출력을 얻을; .Value.ToString () - 스트링 메시지 cmd.Parameters [1] .NAME 특성 [properties.Length] =를 cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 메시지를 반환; } 캐치 (예외 예) { cmd.Dispose (); // 릴리스 자원 conn.Dispose (); // 릴리스 자원 conn.Close (); // 닫기 예를 던져; } } }