El segundo codigo que muestras NO insrta en la base de datos.
Eso esta cargando una DataRow en una DataTable, pero no actualizando la base de datos.
No hay mejor forma y en cada caso se tiene que estudiar, pero la verdadera duda debe ser si utilizar
DataReader o
DataAdapters. En particular, yo utilizo DataAdapters para trabajar desconectado.