La consulta que has escrito es un INNER join. Esto significa que no devolverá ningún registro, aunque el libroNombre exista, en el caso de que en la tabla "ejemplar" no exista un registro con el mismo ID.
Y en cualquier caso, la forma en la que lees los resultados no es la correcta. Estás cargando dos datatables con LOS MISMOS datos y no, como aparentemente parece que tratas de hacer, cada uno con los datos de una de las dos tablas.
Si quieres traer los datos de cada tabla a dos datatables distintos, tendrás que escribir dos sentencias select y configurar cada una en uno de los dos dataadapters.
Y si quieres leer de golpe los datos de las dos tablas devolviendo un mismo registro con las columnas de las dos tablas, entonces está bien que hagas un JOIN de las mismas, pero recogerás el resultado con un solo dataadapter hacia un único datatable. Y si
puede darse el caso de que en la primera tabla exista el registro pero en la segunda no, entonces te conviene usar un LEFT JOIN porque sino no te devuelve ningún dato:
"select * from libro left join ejemplar on libro.idLibro=ejemplar.libro_idLibro where libro.libroNombre = @libro"