Не могу создать базу данных

2 ответ(ов) в теме
OneXeor
не в сети давно
На сайте с 21.01.2014
Участник
0
20:08

Всем привет, подскажите решение моей проблемы, я пытаюсь через JTextField передать название базы данных что бы выполнилась команда create database + name
Вот класс фрейма где вводится имя БД пароль логин и путь)
<br>package frame;<br><br>import bd.DB;<br>import bd.WorkDB;<br>import java.awt.event.ActionEvent;<br>import java.awt.event.ActionListener;<br>import java.sql.SQLException;<br>import java.util.logging.Level;<br>import java.util.logging.Logger;<br>import javax.swing.*;<br><br>/**<br> *<br> * @author teacher<br> */<br>public class StartFrame extends JFrame {<br><br> private JButton createDB, connectDB, deleteDB;<br> private JTextField tflogin, tfpath, tfdbname;<br> private JPasswordField tfpass;<br> private JPanel panel;<br> private JLabel login, path, pass, dbname;<br> private static String slogin, spath, spass, sNAME;<br><br> public static String getDBNAME() {<br> return sNAME;<br> }<br><br> public static void setsNAME(String sNAME) {<br> StartFrame.sNAME = sNAME;<br> }<br><br> public static String getLogin() {<br> return slogin;<br> }<br><br> public static void setSlogin(String slogin) {<br> StartFrame.slogin = slogin;<br> }<br><br> public static String getPass() {<br> return spass;<br> }<br><br> public static void setSpass(String spass) {<br> StartFrame.spass = spass;<br> }<br><br> public static String getPath() {<br> return spath;<br> }<br><br> public static void setSpath(String spath) {<br> StartFrame.spath = spath;<br> }<br><br> public StartFrame() {<br> setTitle("start");<br> setBounds(150, 150, 290, 270);<br> setDefaultCloseOperation(EXIT_ON_CLOSE);<br> initComponent();<br> action();<br> setVisible(true);<br><br> }<br><br> public void initComponent() {<br> dbname = new JLabel("Имя базы данных:");<br> tfdbname = new JTextField("Internet");<br> <br> createDB = new JButton("Создать ДБ");<br> deleteDB = new JButton("Уадалить ДБ");<br> connectDB = new JButton("Подсоединиться");<br> tflogin = new JTextField("root");<br> tfpath = new JTextField("jdbc:mysql://localhost/");<br> tfpass = new JPasswordField("Generic");<br> login = new JLabel("Логин: ");<br> pass = new JLabel("Пароль: ");<br> path = new JLabel("Путь:");<br> panel = new JPanel(null);<br> <br> dbname.setBounds(20, 20, 150, 20);<br> tfdbname.setBounds(140, 20, 120, 20);<br> deleteDB.setBounds(142, 190, 120, 20);<br> connectDB.setBounds(150, 142, 100, 20);<br> createDB.setBounds(20, 190, 120, 20);<br><br> tflogin.setBounds(20, 120, 100, 20);<br> tfpass.setBounds(150, 120, 100, 20);<br> tfpath.setBounds(60, 70, 200, 20);<br><br> login.setBounds(20, 100, 100, 20);<br> pass.setBounds(150, 100, 100, 20);<br> path.setBounds(20, 70, 100, 20);<br><br> panel.add(dbname);<br> panel.add(tfdbname);<br> panel.add(tfpath);<br> panel.add(path);<br> panel.add(pass);<br> panel.add(login);<br> panel.add(tfpass);<br> panel.add(tflogin);<br> panel.add(createDB);<br> panel.add(connectDB);<br> panel.add(deleteDB);<br> add(panel);<br> }<br><br> public void action() {<br> createDB.addActionListener(new ActionListener() {<br> @Override<br> public void actionPerformed(ActionEvent e) {<br> try {<br> if (tfpath.getText().equals("jdbc:mysql://localhost/")) {<br> if (tflogin.getText().equals("root")) {<br> if (tfpass.getText().equals("Generic")) { <br> WorkDB.createDB(tfpath.getText(), tfdbname.getText(), tflogin.getText(), tfpass.getText());<br> JOptionPane.showMessageDialog(panel, "База данных создана успешно!", "Создание БД", JOptionPane.INFORMATION_MESSAGE);<br> } else {<br> JOptionPane.showMessageDialog(panel, "Неверный пароль!", "Error", JOptionPane.ERROR_MESSAGE);<br> }<br> } else {<br> JOptionPane.showMessageDialog(panel, "Неверный логин", "Error", JOptionPane.ERROR_MESSAGE);<br> }<br> } else {<br> JOptionPane.showMessageDialog(panel, "Неверный путь к БД", "Error", JOptionPane.ERROR_MESSAGE);<br> }<br> } catch (SQLException ex) {<br> JOptionPane.showMessageDialog(panel, ex, "error", JOptionPane.ERROR_MESSAGE);<br> }<br><br> }<br> });<br><br> deleteDB.addActionListener(new ActionListener() {<br> @Override<br> public void actionPerformed(ActionEvent s) {<br> try {<br> if (tfpath.getText().equals("jdbc:mysql://localhost/")) {<br> if (tflogin.getText().equals("root")) {<br> if (tfpass.getText().equals("Generic")) {<br> WorkDB.deleteDB(tfpath.getText(), tfdbname.getText(), tflogin.getText(), tfpass.getText());<br> <br> JOptionPane.showMessageDialog(panel, "База данных удалена успешно!", "Удаление БД", JOptionPane.INFORMATION_MESSAGE);<br> } else {<br> JOptionPane.showMessageDialog(panel, "Неверный пароль!", "Error", JOptionPane.ERROR_MESSAGE);<br> }<br> } else {<br> JOptionPane.showMessageDialog(panel, "Неверный логин", "Error", JOptionPane.ERROR_MESSAGE);<br> }<br> } else {<br> JOptionPane.showMessageDialog(panel, "Неверный путь к БД", "Error", JOptionPane.ERROR_MESSAGE);<br> }<br> } catch (SQLException ex) {<br> JOptionPane.showMessageDialog(panel, ex, "Error", JOptionPane.ERROR_MESSAGE);<br> }<br> }<br> });<br> connectDB.addActionListener(new ActionListener() {<br> @Override<br> public void actionPerformed(ActionEvent e) {<br> if (tfpath.getText().equals("jdbc:mysql://localhost/")) {<br> if (tflogin.getText().equals("root")) {<br> if (tfpass.getText().equals("Generic")) {<br> spath = tfpath.getText();<br> slogin = tflogin.getText();<br> spass = tfpass.getText();<br> sNAME = tfdbname.getText();<br> new LoginFrame();<br> } else {<br> JOptionPane.showMessageDialog(panel, "Неверный пароль!", "Error", JOptionPane.ERROR_MESSAGE);<br> }<br> } else {<br> JOptionPane.showMessageDialog(panel, "Неверный логин", "Error", JOptionPane.ERROR_MESSAGE);<br> }<br> } else {<br> JOptionPane.showMessageDialog(panel, "Неверный путь к БД", "Error", JOptionPane.ERROR_MESSAGE);<br> }<br> <br> //dispose();<br> }<br> });<br><br> }<br>}

А вот класс где должно всё выполнятся , самое интересное если в этом классе задать константой название то всё ок, но дело в том что мне надо что бы можно было выбирать название, ну это же логично, я просто уже почти доделал проект, и вот такие мелочи не могу сделать(( очень обидно!!!
/*<br> * To change this template, choose Tools | Templates<br> * and open the template in the editor.<br> */<br>package bd;<br><br>import java.sql.SQLException;<br><br>/**<br> *<br> * @author teacher<br> */<br>public class WorkDB {<br> public static void createDB(String path, String NAME, String login, String pass) throws SQLException {<br> DB db = new DB(path, NAME, login, pass);<br> db.update("create database "+NAME);<br> db.close();<br> db = new DB(path, NAME, login, pass);<br> db.update("create table user(Login varchar(25) PRIMARY KEY, Password varCHAR(25))");<br> db.update("INSERT INTO user VALUES('As','As')");<br> db.update("create table Product(id int (10) primary KEY, Name varchar(30), Price double(6,2))");<br> db.update("INSERT INTO Product VALUES('0','IPhone 6','799.3')");<br> db.update("create table blackNote(Login varchar(25) primary key)");<br> db.update("create table orders(id_order int(5) auto_increment primary key, number varchar(30), id int(10), phone varchar(30))");<br> db.update("create tabe id's(id_orders int(10) auto_increment, id_product(10)");<br> db.close();<br> }<br><br> public static void deleteDB(String path,String NAME, String login, String pass) throws SQLException {<br> DB db = new DB(path, "", login, pass);<br> db.update("drop database " + NAME);<br> db.close();<br> }<br>}

А вот ошибка!!
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'internet'

Редакции сообщения
0
OneXeor
не в сети давно
На сайте с 21.01.2014
Участник
0
12:18

Уже решил данную проблему, если кому то интересно то я просто убрал в этой строке "DB db = new DB(path, NAME, login, pass);" переменную NAME и поставил просто "" потому как я пытался передать имя БД до её создания, вот и была ошибка.

Редакции сообщения
0

Ваше имя *

Ваш E-mail *

не публикуется

Текст сообщения *