ADO.NET_06_OracleCommand
19265 단어 command
표 구조
create table AB
(
A VARCHAR2(10),
B VARCHAR2(10),
C BLOB,
D CLOB
)
저장 프로시저
create or replace procedure p_add(v_a in varchar2, v_b in varchar2 ) is
begin
INSERT INTO AB (a, b) VALUES (v_a, v_b);
end p_add;
Execute NonQuery 방법
SQL 실행
Oracle ecommand. Execute NonQuery 방법 은 디 렉 터 리 작업 (예 를 들 어 데이터베이스 구 조 를 조회 하거나 데이터베이스 대상 을 만 드 는 것) 을 수행 하거나 UPDATE, INSERT, DELETE 와 같은 DML 작업 을 수행 하 는 데 사 용 됩 니 다.
string connStr = "Data Source=ora11; uid=scott; pwd=tiger; unicode=true";
string aVar = "AAA";
string bVar = "AAA";
string dVar = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
string sqlStr = "INSERT INTO AB(A,B,D) VALUES(':aVar',':bVar',':dVar')";
sqlStr = sqlStr.Replace(":aVar", aVar).Replace(":bVar", bVar).Replace(":dVar", dVar);
OracleConnection conn = new OracleConnection(connStr);
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = sqlStr;
cmd.CommandType = CommandType.Text;
try
{
conn.Open();
cmd.ExecuteNonQuery();
Response.Write(" .");
//int rowAffected = cmd.ExecuteNonQuery();
//Response.Write(" :" + rowAffected);
}
catch (Exception ex)
{
Response.Write(" ." + ex);
}
finally
{
conn.Close();
conn.Dispose();
cmd.Dispose();
}
설명 하 다.
1) Oraclecommand. Execute NonQuery 방법 은 UPDATE, INSERT, DELETE 문장 에 대해 이 명령 에 영향 을 주 는 줄 수 를 되 돌려 줍 니 다.다른 유형의 문장 에 대해 반환 값 은 - 1 이다.스크롤 백 이 발생 하면 반환 값 은 - 1 입 니 다.
2) 이 예 는 SQL 문 구 를 직접 만 들 고 Oracle Parameter 로 매개 변 수 를 가 진 SQL 을 실행 할 수 있 습 니 다.
매개 변수 가 있 는 SQL 실행
string connStr = "Data Source=ora11; uid=scott; pwd=tiger; unicode=true";
string insertSql = "INSERT INTO AB(A,B) VALUES(:aVar,:bVar)";
OracleConnection conn = new OracleConnection(connStr);
conn.Open();
OracleCommand cmd = new OracleCommand(insertSql, conn);
OracleParameter[] paras = {
new OracleParameter("aVar", OracleType.NVarChar, 10),
new OracleParameter("bVar", OracleType.NVarChar, 10)};
paras[0].Value = "AAA";
paras[1].Value = "AAA";
foreach (OracleParameter para in paras)
cmd.Parameters.Add(para);
cmd.CommandType = CommandType.Text;
try
{
cmd.ExecuteNonQuery();
Response.Write(" .");
//int rowAffected = cmd.ExecuteNonQuery();
//Response.Write(" :" + rowAffected);
}
catch
{
Response.Write(" .");
}
finally
{
conn.Close();
conn.Dispose();
cmd.Dispose();
}
설명 하 다.
1) SQL 문 구 를 Oracle Parameter 로 유연 하 게 실행 하지만 실제 프로젝트 에 서 는 그렇지 않 고 SQL 문 구 를 직접 만 드 는 경우 가 많다.직접 SQL 문 구 를 구성 하 는 것 은 직관 적 이 고 디 버 깅 프로그램 에서 SQL 문 구 를 정확하게 검사 하기 쉽다.
2) 그렇다면 오 라 클 매개 변 수 는 어떤 경우 에 사용 하나 요?데이터베이스 의 큰 필드 (예 를 들 어 Clob 와 Blob) 를 조작 할 때 Clob 필드 를 조작 할 때 SQL 문 구 를 직접 구성 하면 문자열 길이 제한 이 있 을 수 있 습 니 다.이 점 은 Oracle 9i 에 서 는 뚜렷 하지만 Oracle 11g 에 서 는 거의 알 아 볼 수 없다.안전 을 위해 서 나 는 보통 오 라 클 파 라 메 터 를 사용한다.
3) Oracle Parameter 는 7 개의 구조 함수 가 있 습 니 다. MSDN 에 가서 보 세 요. 자신 이 가장 좋아 하 는 방법 을 찾 으 면 됩 니 다.
ExecuteScalar 방법
string connStr = "Data Source=ora11; uid=scott; pwd=tiger; unicode=true";
string sqlStr = "SELECT COUNT(*) FROM EMP";
OracleConnection conn = new OracleConnection(connStr);
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = sqlStr;
cmd.CommandType = CommandType.Text;
try
{
conn.Open();
Int32 count = Convert.ToInt32(cmd.ExecuteScalar());
Response.Write(" ." + count);
}
catch (Exception ex)
{
Response.Write(" ." + ex);
}
finally
{
conn.Close();
conn.Dispose();
cmd.Dispose();
}
설명 하 다.
(1) Oraclecomand. ExecuteScalar 방법 은 결과 의 데이터 세트 개 수 를 되 돌려 줍 니 다. 보통 사용자 로그 인 에 사 용 됩 니 다.(2) 또한 이 방법 은 조회 결과 가 집 중 된 첫 줄 의 첫 번 째 열 을 되 돌려 줍 니 다.이 예 를 들 어 SQL 을 'SELECT * FROM EMP WHERE EMPNO =' + '7369' + '로 바 꾸 고 오 라 클 데이터 어댑터 로 데이터 세트 를 채 워 출력 결 과 를 얻 을 수 있 습 니 다.
ExecuteReader 방법
string connStr = "Data Source=ora11; uid=scott; pwd=tiger; unicode=true";
string sqlStr = "SELECT d FROM ab";
OracleConnection conn = new OracleConnection(connStr);
OracleCommand cmd = new OracleCommand();
OracleDataReader dr = null;
cmd.Connection = conn;
cmd.CommandText = sqlStr;
cmd.CommandType = CommandType.Text;
try
{
conn.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
if (dr[0].ToString().Length > 0)
Response.Write(dr[0].ToString() + "</br>");
}
}
catch (Exception ex)
{
Response.Write(" ." + ex);
}
finally
{
conn.Close();
conn.Dispose();
cmd.Dispose();
}
여러 SQL 실행
여러 개의 Oracle Command 실행
ArrayList commands = new ArrayList();
string connStr = "Data Source=ora11; uid=scott; pwd=tiger; unicode=true";
string insertSql = "INSERT INTO AB(A,B) VALUES(:aVar,:bVar)";
OracleConnection conn = new OracleConnection(connStr);
conn.Open();
OracleTransaction tran = conn.BeginTransaction();
for (int i = 0; i <= 10; i++)
{
OracleCommand cmd = new OracleCommand(insertSql, conn);
OracleParameter[] paras = {
new OracleParameter("aVar", OracleType.NVarChar, 10),
new OracleParameter("bVar", OracleType.NVarChar, 10)};
paras[0].Value = "AAA" + i;
paras[1].Value = "BBB" + i;
foreach (OracleParameter para in paras)
cmd.Parameters.Add(para);
cmd.CommandType = CommandType.Text;
commands.Add(cmd);
}
try
{
foreach (OracleCommand cmd in commands)
{
cmd.Connection = conn;
cmd.Transaction = tran;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
tran.Commit();
Response.Write(" .");
}
catch (Exception ex)
{
tran.Rollback();
Response.Write(" ." + ex);
}
finally
{
foreach (OracleCommand cmd in commands)
{
cmd.Dispose();
}
tran.Dispose();
conn.Dispose();
conn.Close();
}
PL SQL 실행
StringBuilder sqlSb = new StringBuilder();
string connStr = "Data Source=ora11; uid=scott; pwd=tiger; unicode=true";
OracleConnection conn = new OracleConnection(connStr);
sqlSb.Append("BEGIN ");
for (int i = 0; i <= 10; i++)
{
string aCol = "AAA" + i;
string bCol = "BBB" + i;
string insertSql = "INSERT INTO AB(A,B) VALUES('" + aCol + "','" + bCol + "'); ";
sqlSb.Append(insertSql);
}
sqlSb.Append(" END;");
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = sqlSb.ToString();
cmd.CommandType = CommandType.Text;
try
{
conn.Open();
cmd.ExecuteNonQuery();
Response.Write(" .");
}
catch (Exception ex)
{
Response.Write(" ." + ex);
}
finally
{
conn.Close();
conn.Dispose();
cmd.Dispose();
}
실행 메모리 프로 세 스
string connStr = "Data Source=ora11; uid=scott; pwd=tiger; unicode=true";
OracleConnection conn = new OracleConnection(connStr);
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "p_add";
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter[] paras = {
OracleParameter("v_a", OracleType.NVarChar, 10),
OracleParameter("v_b", OracleType.NVarChar, 10)};
paras[0].Value = "AAA";
paras[1].Value = "AAA";
foreach (OracleParameter para in paras)
cmd.Parameters.Add(para);
try
{
conn.Open();
cmd.ExecuteNonQuery();
Response.Write(" .");
}
catch (Exception ex)
{
Response.Write(" ." + ex);
}
finally
{
conn.Close();
conn.Dispose();
cmd.Dispose();
}
다운로드 데모
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
peco의 쉽고 편리한 사용법가자. | peco 를 사용하여 검색한 파일/디렉토리에 cd, ls, rm, cat, vim 한다. 각각 별칭으로 쉽게 사용할 수 있도록 한다. lsp, vimp, catp 등도 마찬가지로 검색해, 각각의 액션을 실...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.