проблема с закидывание данных в бд. у меня должно быть база данных со связанными таблицами country, region и city. закинуть данные в city не получается. | Код | CREATE TABLE country (id VARCHAR(2), name_ru VARCHAR(20), name_en VARCHAR(20), CONSTRAINT pk_country PRIMARY KEY (id) ); CREATE TABLE region (region VARCHAR(40), CONSTRAINT pk_region PRIMARY KEY (region) ); CREATE TABLE city (id_coutry VARCHAR(2), name_region VARCHAR(40), city VARCHAR(40), CONSTRAINT fk_id FOREIGN KEY (id_coutry) REFERENCES COUNTRY(id) ON DELETE CASCADE, CONSTRAINT fk_region FOREIGN KEY (name_region) REFERENCES REGION(region) ON DELETE CASCADE );
|
| Код | <?xml version="1.0" encoding="UTF-8"?> <countries> <country id="ru" name_ru="Россия" name_en="Russian Federation"> <region name="Алтайский край"> <city name="Алейск" /> <city name="Барнаул" /> <city name="Белокуриха" /> <city name="Бийск" /> <city name="Горняк" /> <city name="Заринск" /> <city name="Змеиногорск" /> <city name="Камень-на-Оби" /> <city name="Новоалтайск" /> <city name="Рубцовск" /> <city name="Славгород" /> <city name="Яровое" /> </region> <region name="Амурская обл"> <city name="Белогорск" /> <city name="Благовещенск" /> <city name="Завитинск" /> <city name="Зея" /> <city name="Райчихинск" /> <city name="Свободный" /> <city name="Сковородино" />
|
| Код | /* * To change this template, choose Tools | Templates * and open the template in the editor. */
package java_2_3;
import java.util.logging.Level; import java.util.logging.Logger; import org.xml.sax.*; import org.xml.sax.helpers.DefaultHandler; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; /** * * @author alex */
public class Main extends DefaultHandler{ private String currentElement = null;
/** * @param args the command line arguments */ public static void main(String[] args) throws InstantiationException, ClassNotFoundException, IllegalAccessException, IOException, SAXException { Class c = Class.forName("org.apache.xerces.parsers.SAXParser"); XMLReader reader = (XMLReader)c.newInstance(); Main ss = new Main(); reader.setContentHandler(ss); reader.parse("geo.xml"); } public void startElement(String uri, String local_name, String raw_name, Attributes amap) throws SAXException { String driverClass = "org.apache.derby.jdbc.EmbeddedDriver"; String connectionURL = "jdbc:derby://localhost:1527/GEO_DB"; String userID = "admin"; String userPassword = "admin"; Connection con = null; PreparedStatement stmt = null; currentElement = local_name; try { Class.forName(driverClass); con = DriverManager.getConnection(connectionURL, userID, userPassword); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } try { if(local_name.equals("country")){ //System.out.println(local_name+", "+amap.getValue(0)+", "+amap.getValue(1)+", "+amap.getValue(2)); String queryString = "INSERT into country(id, name_ru, name_en)" + "VALUES(?,?,?)"; stmt = (PreparedStatement) con.prepareStatement (queryString); stmt.setString(1, amap.getValue(0)); stmt.setString(2, amap.getValue(1)); stmt.setString(3, amap.getValue(2)); stmt.execute(); stmt.close(); } if(local_name.equals("region")){ //System.out.println(local_name+", "+amap.getValue(0)); String queryString = "INSERT into region(region)" + "VALUES(?)"; stmt = (PreparedStatement) con.prepareStatement (queryString); stmt.setString(1, amap.getValue(0)); stmt.execute(); stmt.close(); } if(local_name.equals("city")){ //System.out.println(local_name+", "+amap.getValue(0)); String queryString = "INSERT into city" + "VALUES(?)";[color=red][/color] stmt = (PreparedStatement) con.prepareStatement (queryString);
stmt.setString(1, amap.getValue(0)); stmt.execute(); stmt.close(); } } catch (SQLException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } public void characters(char[] ch, int start, int length) throws SAXException { String value = new String(ch,start,length); if (!Character.isISOControl(value.charAt(0))) { System.out.println("characters " + value + " found " + currentElement);
} }}
|
Как должен выглядеть код в выделенной строчке??? пробовал как то так | Код | String queryString = "INSERT into city(city)" + "VALUES(IDENTITY_VAL_LOCAL(), IDENTITY_VAL_LOCAL(), ?)";
|
получал 23.08.2010 11:55:07 java_2_3.Main startElement SEVERE: null java.sql.SQLSyntaxErrorException: 'ID_COUNTRY' не является столбцом в таблице или VTI 'ADMIN.CITY'. at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source) at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source) at org.apache.derby.client.am.Connection.prepareStatement(Unknown Source) at java_2_3.Main.startElement(Main.java:73) at org.apache.xerces.parsers.SAXParser.startElement(SAXParser.java:1376) at org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1284) at org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1806) at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1182) at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381) at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098) at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1139) at java_2_3.Main.main(Main.java:33)
|