Aller au contenu

[Contourné] [Java + mySQL] commande "source"

Featured Replies

Posté(e)

Bonjour, alors voilà, j'ai creer une base de données mySQL avec un fichier texte contenant mes requetes. Mais j'aimerai le lancer depuis java. Je reussit a executer des requètes sur la BD à parir de java grâce a un driver jdbc, mais sur les requetes type source , j'ai un message d'erreur : "java.sql.SQLException: Erreur de syntaxe près de 'source . ."

J'utilise dans java

	stmt.execute("source J:/Biblio/Creation_BD.txt");

où stmt est un Statement.

Je vois pas d'ou est l'erreur. Peut être que c'est pas le driver qui ne prend pas en charge ce type de requete , ou le chemin ( il est bon mais je sais pas si il faut préciser d'autres choses )

Bref je suis paumé et je trouve rien sur le net. :roll:

Edit: N'hesitez pas si vous savez contourné le problème, par exemple , en découpant le fichier en différents strings. Mes faibles connaisances en java me permette pas de le faire. :s

Modifié par Rakkeur

Posté(e)

La méthode execute(String) est faite pour lancer une requête SQL.

Or "source unFichier" n'est pas une requête SQL, mais une instruction que comprend l'interpréteur MySQL.

A ma connaissance, il n'y a pas de méthode prédéfinies pour exécuter un fichier SQL.

Il suffit de l'ouvrir, de lire chaque requête qu'il contient, et de l'exécuter.

Posté(e)
  • Auteur

Merci, :iloveyou: je m'en doutais un peu que ca existait pas.

Pour ceuxqui cherche comment passer outre, j'ai créer une méthode qui charge les instructions une après l'autre ( comme l'a dit fabien29200 ) :

public static void chargement() throws Exception {
  {
BufferedReader lecteurAvecBuffer = null;
String ligne;

try
  {
	lecteurAvecBuffer = new BufferedReader
	  (new FileReader("Creation_BD.txt"));
  }
catch(FileNotFoundException exc)
  {
	System.out.println("Erreur d'ouverture");
  }
while ((ligne = lecteurAvecBuffer.readLine()) != null)
  stmt.execute(ligne);
lecteurAvecBuffer.close();
 }
}

Voilà.

Posté(e)

un peu dangereux, j'aurai plutot fait un truc genre:

public static void chargement() throws Exception
{
	BufferedReader reader = null;
	String currentLine = null;
	String currentCmd = "";

	try
	{
		reader = new BufferedReader
		(new FileReader("Creation_BD.txt"));
	}
	catch(FileNotFoundException exc)
	{
		System.out.println("Erreur d'ouverture");
	}
	while ((currentLine = reader.readLine()) != null)
	{
		currentLine = currentLine.trim();
		if(currentLine.startsWith("-- ")) //skip comments (yes strict is "-- " not "--")
			continue;
		StringTokenizer st = new StringTokenizer(currentLine,";",true);
		while(st.hasMoreTokens())
		{
			currentCmd += st.nextToken();
			if(currentCmd.endsWith(";"))
			{
				//stmt.execute(currentCmd);
				currentCmd = "";
			}
		}
	}
	reader.close();
}

Modifié par Wooden

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.