2010-03-31 11 views
5

Tengo una duda yo uso el siguiente fragmento de código de obtener datos de una base de datos SqlLite y cargarlo en una tabla de datosDiferencia entre DataTable.Load() y 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(); 

En algunos casos, cuando intento cargar me da "Error al habilitar las restricciones excepción"

Pero cuando probé esta pieza a continuación dada de código para una misma mesa y el mismo conjunto de registros funcionó

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"]; 

puede alguien decirme cuál es la diferencia entre dos

+0

Suena como la puesta en práctica del método SqlLite "carga" tiene un error. Informar a http://sourceforge.net/projects/adodotnetsqlite/. En la edición de SQL Server, el método "Cargar" también tiene problemas de rendimiento. Consulte https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=95318&wa=wsignin1.0, por lo que no lo he usado en mi código, por razones de consistencia cuando se mueve entre proveedores de datos. –

Respuesta

5

El método Load() evalúa deliberadamente las restricciones, mientras que simplemente extraer un DataTable del Dataset por índice no lo hace. Esa es la diferencia de interés en su caso.

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

+0

Esa es la respuesta correcta; consulte este comentario para obtener información: http://stackoverflow.com/questions/6073382/read-sql-table-into-c-sharp-datatable/14807940#comment35409117_14807940 y este http: // stackoverflow. com/questions/229425/net-datatable-skips-rows-on-loaddatareader – nawfal