<prompt> Unda programu ya Java ambayo inasoma faili kubwa ya maandishi, huhesabu marudio ya kila neno, na kuhifadhi matokeo katika hifadhidata ya MySQL.PLINFORMAT  <response>: agiza java.io.BufferedReader;agiza java.io.FileReader;agiza java.io.IOException;kuagiza java.sql.Connection;agiza java.sql.DriverManager;agiza java.sql.PreparedStatement;agiza java.sql.SQLException;agiza java.util.HashMap;agiza java.util.Map;darasa la umma WordCounter Ramani tuli ya umma countWordsString filePath inarusha IOException Ramani wordCount new HashMap; jaribu Msomaji wa BufferedReader BufferedReader mpya FileReaderfilePath Mstari wa kamba; wakati line reader.readLine ! null Kamba maneno line.splits; kwa Neno la mfuatano: maneno neno neno.toLowerCase.replaceAlla-z0-9, ; ikiwa !word.isEmpty wordCount.putneno, wordCount.getOrDefaultneno, 0 1; kurudi nenoCount; utupu tuli wa umma String args ikiwa args.length ! 1 System.err.printlnMatumizi: java Main ; kurudi; Njia ya faili ya kamba args0; jaribu Ramani wordCounts WordCounter.countWordsfilePath; DatabaseManager.saveWordCountswordCounts; System.out.printlnHesabu za Neno zimehifadhiwa kwenye hifadhidata.; kukamata IOException e System.err.printlnHitilafu katika kusoma faili ya maandishi: e.getMessage; catch SQLException e System.err.printlnHitilafu katika kuhifadhi hesabu za maneno kwenye hifadhidata: e.getMessage; Meneja wa Hifadhidata ya darasa Private tuli final String DB_URL jdbc:mysql:localhost:3306word_count_db; Kamba ya tuli ya kibinafsi DB_USER mizizi; Kamba ya tuli ya faragha DB_PASSWORD neno_la_siri; public static void saveWordCountsRamani wordCounts hutupa SQLException jaribu Muunganisho wa muunganisho DriverManager.getConnectionDB_URL, DB_USER, DB_PASSWORD Hoja ya mfuatano INGIZA KATIKA hesabu_ya_maneno neno, hesabu THAMANI ?, ? KWENYE hesabu ya USASISHAJI WA UFUNGUO DUPLICATE hesabu ?; Taarifa ya PreparedStatement connection.prepareStatementhoja; kwa Map.Entry ingizo : wordCounts.entrySet statement.setString1, entry.getKey; statement.setInt2, entry.getValue; statement.setInt3, entry.getValue; statement.addBatch; statement.executeBatch; 