Операторы SELECT в JDBC

1
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.JOptionPane;


public class Main
{
public static void main (String[] args) throws Exception

{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con =       DriverManager.getConnection("jdbc:mysql://localhost:3306/convocation","root","");



int id_convo= Integer.parseInt(JOptionPane.showInputDialog(null,"Please Insert Student ConvoID"));

PreparedStatement statement = con.prepareStatement("select name, course from stud_details where id='"+id_convo+"' ");

ResultSet result = statement.executeQuery();

while(result.next())
{
    JOptionPane.showMessageDialog(null, result.getString(1) + " "+ result.getString(2));
}
}
}

У меня возникла проблема с утверждением, где он показывает только имя и курс. Я не знаю, почему для награды это не показало. Я уже имею его в базе данных, и он показывает только первые два в инструкции sql. То же самое, если я делаю SELECET *. будут показаны только первые два в базе данных.

благодаря

Теги:
jdbc

2 ответа

2
Лучший ответ

Я не знаю, почему награда не показана [sic].

Измените свой запрос

select name, course

в

select name, course, award

а потом

JOptionPane.showMessageDialog(null, result.getString(1) + " "
    + result.getString(2));

в

JOptionPane.showMessageDialog(null, result.getString(1) + " "
    + result.getString(2) + " " + result.getString(3));

Кроме того, с JDBC 4.0 и Java 6 вам не нужно регистрировать свой драйвер JDBC с помощью

Class.forName("com.mysql.jdbc.Driver").newInstance();

редактировать

И, как отмечено в комментариях, вы действительно должны правильно использовать PreparedStatement, привязывая этот параметр. Подобно,

PreparedStatement statement = con.prepareStatement(
    "select name, course from stud_details where id=?");
statement.setInt(1, id_convo);

Наконец, не забудьте close() все в блоке finally.

  • 1
    И использовать PreparedStatement
  • 0
    так . это нормально, если я удалю newInstance ()? это работает. Спасибо
0

Если вы уже попробовали wity SELECT *, это показало, что эта проблема не в инструкции SELECT. Эта проблема находится в этом коде

JOptionPane.showMessageDialog(null, result.getString(1) + " "+ result.getString(2));.

Если вы понимаете метод result.getString(), ваша проблема исчезнет. Попробуйте объяснить ниже:

result.getString(1) is represent first column of your table.
result.getString(2) is represent second column of your table.
result.getString(3) is represent third column of your table.
etc.........
........
........

Ещё вопросы

Сообщество Overcoder
Наверх
Меню