사용

2010-05-19 5 views
0

내가사용

public void Test_Import_Customer_1() 

// variables 
string conn; 
string sqlSelect; 
string sqlInsert; 

int extID; 
string name; 
string name2; 
DateTime date_inserted; 

sqlSelect="select id,name,date_inserted from table_competitors_1"; 
oledbreader reader = new GetOledbRader(sqlString,conn); 
while (reader.read()) 
{ 
    name=left((string)myreader["name"],50); //limitation of my field 
    date_inserted=myreader["date_inserted"]; 
    sqlInsert=string.Format("insert into table(name,name2,date_inserted)values '{0}', '{1}', {2})",name,name2,date_inserted); //here is the problem name2 "Use of unassigned local variable" 
    ExecuteSQL(sqlInsert) 
} 

으로 다른처럼 우리의 데이터베이스에 방법 양식 가져 오기를 만드는 코드 생성기가 우리의 데이터베이스 : 우리의 경쟁에서 데이터베이스 입력기를 쓰고 있어요 'xxx는' 기업 데이터베이스에는 각 필드마다 값을 설정할 수 없으며 하나의 변수를 다음에 갈 수있는 많은 수의 테이블이 있습니다.

sqlSelect_Company_1 = "select name,date_inserted from table_1"; 
sqlSelect_Company_2 = "select name,name2 from table_2"; 

같은

기본 값으로 하나 각 변수 하나의 입력을 무시하는 방법은 무엇입니까?

답변

0

매개 변수 값을 변수에 저장하는 대신 키를 필드 이름으로 사용하고 값/매개 변수를 값으로 사용하여 Dictionary 개체에 저장합니다.

tablename의 문자열과 params의 사전을 사용하는 제네릭 메서드를 만듭니다. 문자열 작성기를 사용하여 SQL 문자열을 빌드 할 수 있습니다.

0

아니요, 불가능합니다. 각 변수에 기본값을 지정해야합니다. 초기화되지 않은 변수는 사용할 수 없습니다. 임의의 값을 포함 할 수 있으며 데이터베이스에 임의의 값을 삽입하지 않으려 고합니다!

실제로 원하는 작업은 다음과 같습니다. 필요한 값을 정확하게 사용하는 각 데이터베이스에 대해 별도의 방법을 작성하십시오. 다른 방법은 없으며, 기술적으로 불가능합니다.

매우 많은 수의 대상 데이터베이스가있는 경우이 문제를 해결할 수있는 여러 가지 방법이 있지만 충분히 배경 지식이 부족한 경우에는이 방법을 사용하지 않는 것이 좋습니다. (나는 당신이 C#과 데이터베이스에 대한 새로운 지식을 가지고 있다고 판단하고 있습니다. 내가 틀렸다면 죄송합니다.)

각 데이터베이스에 대해 새로운 메소드를 작성하기 만하면됩니다.

+0

예 C#은 처음이지만 데이터베이스는 아닙니다. 문제는 데이터베이스 (액세스, fdb, gdb, mssql, mysql)의 버전이 많다는 것입니다. 예, 각각의 경쟁자에 대한 메소드를 작성하는 것이 좋지만 좋은 소식을 기다리고 있습니다 :) – Tomislav

+1

실제로, CLR은 항상 로컬 변수를 기본값으로 초기화합니다. C#의 규칙은 지역 주민들이 사용하기 전에 명확하게 할당 되어야만하며, "무작위"초기 값의 관찰을 방지하는 것이 아니라 일반적인 클래스의 논리 버그를 방지하는 것입니다. –

+0

예, 기본 문제를 설명하기 위해 의도적으로 그 사실을 무시했습니다. 레이몬드를 인용해도 될까요? Nitpicker! JK;) 나는 당신의 블로그를 좋아합니다, Eric. – mafu