1
次のコードを使用して新しいデータベースを作成します。指定されたデータベース名が既存のデータベース名と同じ場合は、既存のデータベースを削除する必要があることを意味します。それ以外の場合は、指定した名前で新しいデータベースを作成する必要があります。新しいデータベースを作成する際にエラーが発生しました。mysqlでのDBの作成と削除
package db1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Main implements ActionListener
{
JTextField txt;
JButton create;
JFrame frame;
JPanel panel;
JOptionPane jop;
//Font font = UIManager.getFont("txt.font");
public Main()
{
frame=new JFrame();
panel=new JPanel();
txt=new JTextField(10);
create=new JButton("create");
create.setBounds(20, 200, 50, 40);
panel.add(txt);
panel.add(create);
create.addActionListener(this);
frame.add(panel);
// n.getContentPane().add(new textf());
frame.setSize(440,310);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
Connection con = null;
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/vijay1","root","root");
try{
Statement st = con.createStatement();
String database=txt.getText();
st.executeUpdate("DROP DATABASE IF EXISTS "+database);
JOptionPane.showMessageDialog(frame,"EXISTING DATABASE DELETED");
st.executeUpdate("CREATE DATABASE "+database);
JOptionPane.showMessageDialog(frame,"DATABASE CREATED");
}
catch (SQLException s){
System.out.println("SQL statement is not executed!");
}
}
catch (Exception ea){
ea.printStackTrace();
}
}
public static void main(String[] args)
{
new Main();
}
}
**あなたの**スタックトレースを投稿(例外がスロー)してください。 –
また、これは悪い設計です。 UI用とデータベース用の2つのクラスが必要です。 'actionPerformed()'は、データベース操作クラスのインスタンスをインスタンス化(または静的メソッドを呼び出す)し、新しいデータベース名を渡し、更新を実行するよう指示します。 –
また、ユーザーがデータベース変数の値を提供する場合は、SQLインジェクション攻撃が可能です。値をMySQLに渡す前に、その値をフィルタリングする(たとえば、正規表現をホワイトリストする)必要があります。 – jackrabbit