Java y Sqlite

Quisiera saber como puedo hacer que mi programa pida permiso para crear el archivo .db en la unidad c:

cuando abro la conexión hacia esa unidad me manda a la excepción de acceso denegado. y dejando eso de lado a veces no me permite insertar registros.. y no me acepta las sentencias update y delete.. es mi primera vez usando SQLite me gustaría saber por que ocurren estos problemas.
no se por que sera que no me acepta la estructura de los Update ni Deletes .

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Nopalin

Por que quieres guardarlo en

Por que quieres guardarlo en la carpeta c? es una mala práctica y es conveniente que te vayas deshaciendo de ellas desde que comienzas con la programación.

Por otro lado, el permiso para escribir en C: se necesita desde el momento en que se ejecuta la aplicación, es decir, una vez arrancada, ya no puedes subir de nivel (hasta donde tengo entendido). Ejecutar un jar directamente no te permite hacer eso, por lo que tendrias que ver la manera de wrapear la llamada usando un ejecutable, como por ejemplo launch4j.

Saludos

Imagen de Rafael Carrillo

Gracias

Ya me regaño un profe con eso de crear la base de datos en C: , ya me di cuenta que no es buena idea.. pero eso de que aparezca the database is locked. se me hace raro... no tendras información que pueda ayudarme con eso

Imagen de ezamudio

concurrencia?

Probablemente sólo un proceso puede abrir el archivo a la vez y lo mantiene bloqueado. Al final el proceso debe liberar el archivo; si no lo hace, se queda bloqueado hasta que reinicies. O tal vez sí tienes dos procesos corriendo y pues el segundo ya no puede abrir ese archivo.

Según recuerdo en Windows 7+

Según recuerdo en Windows 7+ todo lo que esté afuera de tu home C:/Users/tu necesita permisos de administrador para escribirse.

Puedes ejecutar tu programa como administrador o me parece que había una opción para listar tu app como aplicaciones seguras o algo así.

Handle

 

Para saber qué proceso está bloqueando un archivo, podrías utilizar Handle.

Sólo necesitas pasarle la ruta de tu archivo en cuestión. Por ejemplo, si descomprimiste el archivo de la herramienta en Descargas y quieres saber qué proceso está utilizando cierto archivo, digamos, hiberfil.sys, entonces:

%UserProfile%\Downloads\Handle.exe C:\hiberfil.sys

img

Para liberar el archivo, sólo necesitas terminar el proceso. Con el PID del proceso encontrado previamente utilizando esta herramienta (para este ejemplo, 4), podrías ejecutar el siguiente comando:

taskkill /PID 4

Si lo haces de esta forma, ya no necesitas reiniciar.

~~~

Imagen de Rafael Carrillo

Muchas gracias ..

Eso era.. es que en mysql no cerraba nunca la conexión y no me fallaba.. pero en lite si me fallo por no cerrar la conexion ..Muy buena solución ...gracias... hay disculpen a este novato.