'분류 전체보기'에 해당되는 글 157건

  1. 2009.01.24 Thread 동기화 문제 static일 경우
  2. 2009.01.24 종류별 Oracle 연동
  3. 2009.01.24 DB Data Select(Oracle)

Thread 동기화 문제 static일 경우

|

동기화시 가장 많이 사용하는 키워드는 lock

하지만 lock사용시 인수가 static일경우 사용 방법이 조금 틀리다

기본적으로 lock을 걸 경우 간단하게 내부 필드일 경우 this를 사용하면 되지만

static일경우 바로 lock을 사용할시 에러..

그렇다면??

typeof(클래스명)

이러한 형태로 나타내 줘야 한다

Object는??

더욱 간단하다

클래스명.object

이련형태로 lock을 결면 성공~!!!

사용 예)


public class Top{
 private static int limit = 0;
 public void SayHello(){
  int hash = Thread.CurrentThread.GetHashCode();
  int count =0;
  lock(typeof(Top)){
   while(count<10){
    Console.WriteLine("Thread " + hash + ":" + limit++);
    count++;
    Thread.Sleep(10);
   }
  }//lock
 }
}

Object일 경우)

public class Top{
 private static object obj = new object();
 public void SayHello(){
  int hash = Thread.CurrentThread.GetHashCode();
  int count =0;
  lock(Top.obj){
   while(count<10){
    Console.WriteLine("Thread " + hash + ":" + count++);
    Thread.Sleep(10);
   }
  }//lock
 }
}

And

종류별 Oracle 연동

|

Oledb &ODBC

string conStr = "Provider = MSDAORA" + //드라이버

                     "Data Source=XE;" + //서버

                     "User id = " // Oracle ID

                     "Password =" //Oracle Password

 

OracleClient //드라이버만 제외된 상태

string conStr = "Data Source=XE;" + //서버

                     "User id = " // Oracle ID

                     "Password =" //Oracle Password

(Namespace System.Data.OracleClient 추가)

 

특이점 : 보통 MSSQL 또는 MySql에서 Paramater인자로 @을 사용

            그러나 Oracle에서는 :을 사용한다

And

DB Data Select(Oracle)

|

using System;
using System.Collections;
using System.Text;
using System.Data;
using System.Data.OracleClient;


namespace Tran_01
{
    public class OleDbParamTest
    {
        public static void Main()
        {
            string conStr = "Data Source = XE;" +
                "User id = ;" +
                "password = ";
            string Query = "Select * from address where addr = :addr1 or addr = :addr2";
            try
            {
                OracleConnection Oconn = new OracleConnection(conStr);
                Oconn.Open();
                Console.WriteLine("DB 열림");
                OracleCommand cmd = new OracleCommand(Query, Oconn);
                cmd.Parameters.Add("addr1", OracleType.VarChar);
                cmd.Parameters.Add("addr2", OracleType.VarChar);
                cmd.Parameters["addr1"].Value = "seuol";
                cmd.Parameters["addr2"].Value = "Ameria";
                OracleDataReader Odr = cmd.ExecuteReader();
                while (Odr.Read())
                {
                    Console.Write(Odr.GetFloat(0) + "t");
                    Console.Write(Odr.GetString(1) + "t");
                    Console.Write(Odr.GetString(2) + "t");
                    Console.WriteLine();
                }
                Odr.Close();
                Oconn.Close();
            }
            catch (OracleException ErrMsg)
            {
                Console.WriteLine(ErrMsg.Message);
                Console.WriteLine("에러");
            }
        }
    }
}

 

/*

역으로 집어넣는것은 Command.ExecuteNonQuery() 함수 사용 

*/
And
prev | 1 | ··· | 49 | 50 | 51 | 52 | 53 | next