Java e Banco de Dados JDBC

olá galera preciso de ajuda pq estou começando uma nova matéria na disciplina de programação que envolve java e banco de dados. então a principal função do meu programa é fazer um CRUD = create, read, update e delete no banco de dados com o java. E ainda com JOptionPane

para progrmar eu uso Sublime Text 3 e para o banco de dados o MySqlWorkbench
na linha 104 e 105 foi minha tentativa de fazer com que o usuário insira ele mesmo os dados assim como quero com o resto do programa.

import javax.swing.JOptionPane;
import javax.swing.JComboBox;
import javax.swing.JTextField;

import java.util.List;
import java.util.ArrayList;
import java.util.Properties;
import java.util.Calendar;

import java.time.LocalDateTime;

import java.text.SimpleDateFormat;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.lang.ArrayIndexOutOfBoundsException;

public class DataAccess
{
public static void Menu()
{
String[] operacaoTabela = {“Criar Tabela”, “Inserir Dados”, “Listar”, “Atualizar Dados”, “Deletar”};
JComboBox operacoes = new JComboBox(operacaoTabela);
JOptionPane.showOptionDialog(null, operacoes, “Selecione uma ação para realizar:”,
JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);

	if(operacoes.getSelectedItem().toString() == "Criar Tabela")
	{
		CriarTabela(null);
	}

	if(operacoes.getSelectedItem().toString() == "Inserir Dados")
	{
		Inserir(null);
	}
		
	if(operacoes.getSelectedItem().toString() == "Listar")
	{
		Listar();
	}

	if(operacoes.getSelectedItem().toString() == "Atualizar Dados")
	{
		Atualizar();
	}
		
	if(operacoes.getSelectedItem().toString() == "Deletar")
	{			
		Deletar();
	}
	
}

public static void CriarTabela(String descricaoProduto)
{
	Connection conexao = null;
	Properties propriedades = new Properties();
	
	propriedades.put("user", "root");
	propriedades.put("password", "root");

	try{
		String driverName = "com.mysql.jdbc.Driver"; 
		Class classe = Class.forName("com.mysql.jdbc.Driver");
		classe.newInstance();
		conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1?useSSL=false", propriedades);
		
		JOptionPane.showInputDialog(null, "Informe o nome da tabela a ser criada: ", JOptionPane.QUESTION_MESSAGE);
		JOptionPane.showInputDialog(null, "Informe os atributos da respectiva tabela: ", JOptionPane.QUESTION_MESSAGE);

		Statement consulta = conexao.createStatement();
		consulta.execute("USE gestao_produtos; CREATE TABLE PRODUTO(PROD_DC_PRODUTO, PROD_DT_CADASTRO) VALUES ('" + descricaoProduto + "', '" + LocalDateTime.now() + "')");
	}
	catch (SQLException excecaoSql)
	{
		System.out.println(excecaoSql);
	}
	catch (Exception excecao)
	{
		System.out.println(excecao);
	}
}

public static void Inserir(String descricaoProduto)
{
	Connection conexao = null;
	Properties propriedades = new Properties();
	
	propriedades.put("user", "root");
	propriedades.put("password", "root");

	try{
		Class classe = Class.forName("com.mysql.jdbc.Driver");
		classe.newInstance();
		conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1/gestao_produtos?useSSL=false", propriedades);
		
		Statement consulta = conexao.createStatement();
		
		//String sql = "INSERT INTO my_table (col_string) VALUES('a string')"; 
		//consulta.executeUpdate(sql);  // essas duas linhas fazem o mesmo q a 105
		String sqlinsert = "insert into PRODUTO  (PROD_DC_PRODUTO, PROD_DT_CADASTRO) VALUES ("(?, +LocalDateTime.now() + ")";
		consulta.executeUpdate(sqlinsert);
	}
	catch (SQLException excecaoSql)
	{
		System.out.println(excecaoSql);
	}
	catch (Exception excecao)
	{
		System.out.println(excecao);
	}

}

public static void Listar()
{
	Connection conexao = null;
	Properties propriedades = new Properties();
	
	propriedades.put("user", "root");
	propriedades.put("password", "root");

	try
	{
		Class classe = Class.forName("com.mysql.jdbc.Driver");
		classe.newInstance();
		conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1/gestao_produtos?useSSL=false", propriedades);
		Statement consulta = conexao.createStatement();
		ResultSet conjuntoDados = consulta.executeQuery("SELECT * FROM PRODUTO");

		while (conjuntoDados.next())
			System.out.println(conjuntoDados.getString(1) + "\t\t\t" + conjuntoDados.getString(2) + "\t\t" + conjuntoDados.getString(3));
	}
	catch (SQLException excecaoSql)
	{
		System.out.println(excecaoSql);
	}
	catch (Exception excecao)
	{
		System.out.println(excecao);
	}
}

public static void Salvar(String descricaoProduto)
{
	Connection conexao = null;
	Properties propriedades = new Properties();
	
	propriedades.put("user", "root");
	propriedades.put("password", "root");

	try
	{
		Class classe = Class.forName("com.mysql.jdbc.Driver");
		classe.newInstance();
		conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1/gestao_produtos?useSSL=false", propriedades);
		Statement consulta = conexao.createStatement();
		consulta.execute("INSERT INTO PRODUTO (PROD_DC_PRODUTO, PROD_DT_CADASTRO) VALUES ('" + descricaoProduto + "', '" + LocalDateTime.now() + "')");
		//System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime()));
		//consulta.execute("UPDATE PRODUTO SET PROD_DC_PRODUTO = 'Farinha Láctea' WHERE PROD_ID_PRODUTO = 8 ");
		//consulta.execute("DELETE FROM PRODUTO WHERE PROD_ID_PRODUTO IN (2, 3, 4, 5)");
		//consulta.execute("DELETE FROM PRODUTO");
	}
	catch (SQLException excecaoSql)
	{
		System.out.println(excecaoSql);
	}
	catch (Exception excecao)
	{
		System.out.println(excecao);
	}
}

public static void Atualizar()
{

	Connection conexao = null;
	Properties propriedades = new Properties();
	
	propriedades.put("user", "root");
	propriedades.put("password", "root");

	try
	{
		Class classe = Class.forName("com.mysql.jdbc.Driver");
		classe.newInstance();
		conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1/gestao_produtos?useSSL=false", propriedades);
		Statement consulta = conexao.createStatement();
		consulta.execute("UPDATE PRODUTO SET PROD_DC_PRODUTO = 'Farinha Lactea' WHERE PROD_ID_PRODUTO = 8 ");
		
	}
	catch (SQLException excecaoSql)
	{
		System.out.println(excecaoSql);
	}
	catch (Exception excecao)
	{
		System.out.println(excecao);
	}
}

public static void Deletar()
{	

	Connection conexao = null;
	Properties propriedades = new Properties();
	
	propriedades.put("user", "root");
	propriedades.put("password", "root");


	try
	{
	Class classe = Class.forName("com.mysql.jdbc.Driver");
	classe.newInstance();
	conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1/gestao_produtos?useSSL=false", propriedades);
	
	Statement consulta = conexao.createStatement();
	
	consulta.execute("DELETE FROM PRODUTO WHERE PROD_ID_PRODUTO IN (2, 3, 4, 5)");
	}
catch (SQLException excecaoSql)
	{
		System.out.println(excecaoSql);
	}
	catch (Exception excecao)
	{
		System.out.println(excecao);
	}
}

public static void main(String[] args)
{
	Menu();
}

}

Fica difícil aqui pelo site saber qual é a linha 104.

Mas dando uma corrida no código.
Você não precisa chamar uma nova conexão em tudo que é lugar. Mas uma classe singleton e retorna a conexão dali. Ou abre e fecha sempre uma conexão nova.

Class classe = Class.forName("com.mysql.jdbc.Driver");
		classe.newInstance();
		conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1/gestao_produtos?useSSL=false", propriedades);

essa é alinha 104. desculpa esqueci q não dava pra ver.
String sqlinsert = “insert into PRODUTO (PROD_DC_PRODUTO, PROD_DT_CADASTRO) VALUES (”(?, +LocalDateTime.now() + “)”;

mas essa classe singleton coloco ela na main??
pq ainda não estudei isso. como disse começamos esse assunto. e faz pouco tempo mas obg

Quanto a linha: qual exception está dando?

Pode ser algo assim, nada muito complexo:

public final class Conexao implements AutoCloseable {

	private static Connection con = null;

	private final static String URL = "jdbc:mysql://localhost:3306/meubanco";
	private final static String USUARIO = "root";
	private final static String SENHA = "";

	private Conexao() {
	}

	public static Connection getConnection() {
		if (con == null) {
			try {
				Class.forName("com.mysql.jdbc.Driver");
				con = DriverManager.getConnection(URL, USUARIO, SENHA);
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
				System.out.println("Driver não encontrado");
			} catch (SQLException e2){
				e2.printStackTrace();
				System.out.println("Falha ao abrir conexão");
			} catch (Exception e3){
				e3.printStackTrace();				
			}
		}
		return con;
	}

	@Override
	public void close() {
		try {
			if(con != null && !con.isClosed()){
				con.close();				
			}			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}