2012-02-01 1 views
0

я пытаюсь понять эту часть кода:Как изменить имя базы данных и таблицу с помощью java?

Properties details= new Properties(); 
details.load(new FileInputStream("details.properties")); 
String userName = details.getProperty("root"); 
String password = details.getProperty("mysqlpassword"); 

String url = "jdbc:mysql://localhost/test"; 
Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
conn = DriverManager.getConnection (url, userName, password); 
System.out.println ("Database connection established"); 
PreparedStatement st = conn.prepareStatement("insert into 'Email_list' values(?)"); 
for(String mail:mails) 

я понимаю, что тестовая база данных является база данных по умолчанию. но если я хочу использовать существующую базу данных, я просто изменю тест на другое имя базы данных, не так ли? Если да, то как мне изменить свой код, если моя новая база данных Test2 с именем таблицы Email, которая содержит почтовый столбец с varchar (100)

Я пытаюсь заменить тест Test2 Email_list по электронной почте, но я не знаю, где введите имя столбца. Благодарим вас за помощь

+0

Я считаю, что вы не получаете выход «Соединение с базой данных установлено» ... правильно? это потому, что в вашем соединении отсутствует номер PORT'. 'String url =" jdbc: mysql: // localhost/test ";' должен быть 'String url =" jdbc: mysql: // localhost: 3306/test ";' .. Здесь '3306' - номер PORT ... –

ответ

0

Операция INSERT, которую вы используете, пропускает столбцы.

INSERT INTO tablename VALUES (1, 2, 3) 

можно записать, если таблица имеет три столбца и для всех трех значений столбцов.

Если некоторые столбцы могут быть оставлены пустыми или имеют значения по умолчанию, вы можете написать

INSERT INTO tablename (column1, column2) VALUES (1, 2) 

В этом Cas значение для column3 является null или значение по умолчанию.

Так что в вашем случае имя столбца не указано.

+0

Можете ли вы приложить учебную ссылку для OP. – RanRag

+0

ОК, поэтому я пытаюсь выполнить это PreparedStatement st = conn.prepareStatement («вставить в значения« mail »(Email_list)»); – Pacific

+0

Это, вероятно, не работает, потому что 'values ​​()' содержит * значения *, а не имена столбцов. Попробуйте использовать клиент 'mysql' для непосредственной работы с вашей базой данных. Вернитесь к Java позже. –

0

Вы отсутствуют PORT число в строке подключения ...

String url = "jdbc:mysql://localhost/test"; должен быть String url = "jdbc:mysql://localhost:PORT_NUMBER/test"; как String url = "jdbc:mysql://localhost:3306/test";

Позвольте мне знать, если у вас есть какие-либо вопросы ...

Кроме того, проверьте ниже как Prepared Statement

import java.sql.*; 

public class TwicePreparedStatement{ 
    public static void main(String[] args) { 
    System.out.println("Twice use prepared statement example!\n"); 
    Connection con = null; 
    PreparedStatement prest; 
    try{ 
    Class.forName("com.mysql.jdbc.Driver"); 
    con = DriverManager.getConnection("jdbc:mysql: 
//localhost:3306/jdbctutorial","root","root"); 
    try{ 
    String sql = "SELECT * FROM movies WHERE year_made = ?"; 
    prest = con.prepareStatement(sql); 
    prest.setInt(1,2002); 
    ResultSet rs1 = prest.executeQuery(); 
    System.out.println("List of movies that made in year 2002"); 
    while (rs1.next()){ 
    String mov_name = rs1.getString(1); 
    int mad_year = rs1.getInt(2); 
    System.out.println(mov_name + "\t- " + mad_year); 
    } 
    prest.setInt(1,2003); 
    ResultSet rs2 = prest.executeQuery(); 
    System.out.println("List of movies that made in year 2003"); 
    while (rs2.next()){ 
    String mov_name = rs2.getString(1); 
    int mad_year = rs2.getInt(2); 
    System.out.println(mov_name + "\t- " + mad_year); 
    } 
    } 
    catch (SQLException s){ 
    System.out.println("SQL statement is not executed!"); 
    } 
    } 
    catch (Exception e){ 
    e.printStackTrace(); 
    } 
    } 
} 

Удача !!!

Смежные вопросы