Comment obtenez-vous les valeurs de toutes les colonnes à l'aide du jeu de résultats.getBinaryStream() dans jdbc?
Comment puis-je écrire tout un tableau à un fichier plat (fichier texte) à l'aide de jdbc? Jusqu'à présent, j'ai tenté le suivant:
Statement statement = connection.createStatement();
ResultSet result = statement.executeQuery("SELECT * FROM tablename");
BufferedInputStream buffer;
FileOutputStream out = new FileOutputStream("flatfile.txt");
while(result.next() )
{
buffer = new BufferedInputStream(result.getBinaryStream("????") );
byte[] buf = new byte[4 * 1024]; //4K buffer
int len;
while( (len = buffer.read(buf, 0, buf.length) ) != -1 )
{
out.write(buf, 0, len );
}
}
out.close();
"????" c'est juste mon espace réservé. Je suis coincé sur ce passage comme un argument.
Quelle est votre question?
Dois-je simplement remplacer"????' avec "" pour obtenir toutes les colonnes ou est-il une autre fonction au sein de ResultSet ou une autre classe pour obtenir une ligne entière? Je veux juste que l'ensemble de la ligne. Pas une seule colonne de l'enregistrement. Je n'ai pas de db connectivité pour tester encore, donc je suis juste essayer de le comprendre à l'avance, donc je suis prêt.
Plus
Ok c'est ce que je pensais et java.sql.La déclaration ne semble pas avoir autre chose que executeQuery() donc est-il une autre classe qui permettrait d'aider avec cela?
Dois-je simplement remplacer"????' avec "" pour obtenir toutes les colonnes ou est-il une autre fonction au sein de ResultSet ou une autre classe pour obtenir une ligne entière? Je veux juste que l'ensemble de la ligne. Pas une seule colonne de l'enregistrement. Je n'ai pas de db connectivité pour tester encore, donc je suis juste essayer de le comprendre à l'avance, donc je suis prêt.
ResultSet
ne pas fournir des méthodes qui traitent de l'ensemble de la ligne. Vous devez traiter avec des colonnes individuellement. Vous trouverez peut-être la getMetaData() méthode utile.Plus
getBinaryStream()
ne fonctionne que pour les BLOB
colonnes de rien d'autre.Ok c'est ce que je pensais et java.sql.La déclaration ne semble pas avoir autre chose que executeQuery() donc est-il une autre classe qui permettrait d'aider avec cela?
OriginalL'auteur Harish Vangavolu | 2014-07-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir tous les noms de colonnes et de l'ensemble de données à partir de votre tableau à l'aide du code ci-dessous.
writeToFile méthode contient la logique de l'écriture dans le fichier (si ce n'était pas assez évident 🙂 )
Pour obtenir de ligne particulière, nous devons déplacer le curseur sur la ligne correspondante dans le jeu de résultats en utilisant absolue(rowNum) puis traiter avec des colonnes à l'intérieur de la ligne. Jeu de résultats.getRow va lui-même se confond quelle ligne pour être de retour ??
OriginalL'auteur Adarsh
Voici comment j'ai vider une table à partir d'une connexion JDBC, très utile pour le débogage si vous voulez voir toutes les lignes qui sont dans une mémoire (ex: HSQL DB par exemple:
de sortie, c'est comme
OriginalL'auteur rogerdpack
result.getBinaryStream("????")
ne reviendra que pour la valeur de cette colonne que vous mettez comme espace réservé.Si vous souhaitez obtenir toute la colonne, vous devez utiliser
ResultSetMetaData
deResultSet
Vous êtes les bienvenus. Non, vous devez utiliser la boucle pour afficher un par un.
OriginalL'auteur sendon1982