2010-03-31 3 views
5

나는 내가 다음 코드 조각을 사용 의심의 여지가 SQLlite 데이터베이스에서 데이터를 얻을 나는 그것이 나에게주는로드하려고 할 때 데이터 테이블에 어떤 경우에는차이점 DataTable.Load()와 DataTable = dataSet.Tables [];

SQLiteConnection cnn = new SQLiteConnection("Data Source=" + path); 

cnn.Open(); 

SQLiteCommand mycommand = new SQLiteCommand(cnn); 
string sql = "select Company,Phone,Email,Address,City,State,Zip,Country,Fax,Web from RecordsTable"; 
mycommand.CommandText = sql; 

SQLiteDataReader reader = mycommand.ExecuteReader(); 

dt.Load(reader); 

reader.Close(); 

cnn.Close(); 

그것을로드 한 '제약 조건을 활성화하지 못했습니다 내가 기록의 같은 테이블과 같은 세트에 대한 코드의 아래 부분을 시도 할 때 예외 "

는하지만 어느 한 두

,617의 차이가 무엇인지 말해 줄 수
SQLiteConnection ObjConnection = new SQLiteConnection("Data Source=" + path); 

SQLiteCommand ObjCommand = new SQLiteCommand("select Company,Phone,Email,Address,City,State,Zip,Country,Fax,Web from RecordsTable", ObjConnection); 
ObjCommand.CommandType = CommandType.Text; 

SQLiteDataAdapter ObjDataAdapter = new SQLiteDataAdapter(ObjCommand); 

DataSet dataSet = new DataSet(); 

ObjDataAdapter.Fill(dataSet, "RecordsTable"); 

dt = dataSet.Tables["RecordsTable"]; 

근무
+0

는 버그가 "로드"방법의 SQLlite 구현 같은데. http://sourceforge.net/projects/adodotnetsqlite/에보고하십시오. SQL Server 버전에서는 "로드"방법에도 성능 문제가 있습니다. https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?Feedback=95318&wa=wsignin1.0을 참조하십시오. 데이터 공급자간에 이동할 때 일관성을 위해 코드에서 사용하지 않았습니다. –

답변

5

Load() 메서드는 의도적으로 제약 조건을 평가하지만 단순히 인덱스로 Dataset에서 DataTable을 꺼내는 것은 아닙니다. 그것은 귀하의 경우에 대한 관심의 차이입니다.

참조 : http://msdn.microsoft.com/en-us/library/hsze9wte(VS.80).aspx

+0

그게 정답이야, 일부 통찰력에 대한이 의견을 참조하십시오 : http://stackoverflow.com/questions/6073382/read-sql-table-into-c-sharp-datatable/14807940#comment35409117_14807940 및이 http : // stackoverflow. com/questions/229425/net-datatable-skips-rows-on-loaddatareader – nawfal