Java-получение данных из базы данных MySQL
я подключился к базе данных MySQL, которая содержит четыре поля (первое из которых является идентификатором, последние содержат строки varchar).
Я пытаюсь получить последнюю строку базы данных и получить содержимое полей, чтобы я мог установить их в переменные (int и три строки) и использовать их позже.
до сих пор у меня есть минимум, чтобы сделать соединение, куда мне идти отсюда? Как вы можете видеть я попытался написать инструкцию SQL чтобы получить последнюю строку, но все пошло не так и я не знаю, как разбить его на отдельные поля.
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/t", "", "");
Statement st = con.createStatement();
String sql = ("SELECT * FROM posts ORDER BY id DESC LIMIT 1;");
st.getResultSet().getRow();
con.close();
4 ответов
здесь вы идете :
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/t", "", "");
Statement st = con.createStatement();
String sql = ("SELECT * FROM posts ORDER BY id DESC LIMIT 1;");
ResultSet rs = st.executeQuery(sql);
if(rs.next()) {
int id = rs.getInt("first_column_name");
String str1 = rs.getString("second_column_name");
}
con.close();
на rs.getInt
или rs.getString
вы можете пройти column_id
начиная от 1
, но я предпочитаю пройти column_name
как его более информативным, как вы не должны смотреть на базу данных table
для чего index
это column
.
обновление : rs.next
boolean next() бросает SQLException
Перемещает курсор на одну строку из текущей позиции. Ля набор результатов курсор изначально располагается перед первой строкой; первый вызов метода next делает первую строку текущей строкой; второй вызов делает вторую строку текущей и так далее.
когда вызов следующего метода возвращает false, курсор располагается после последнего ряда. Любой вызов метода ResultSet, который требуется текущая строка приведет к созданию SQLException. Если тип результирующего набора-TYPE_FORWARD_ONLY, указан поставщик будет ли их реализация драйвера JDBC возвращать false или бросать SQLException при последующем вызове next.
если входной поток открыт для текущей строки, вызов метода next неявно закроет его. Цепочка предупреждений объекта ResultSet очищается при чтении новой строки.
возвращает: true, если новая текущая строка допустима; false, если больше нет строк: Sqlexception - если ошибка доступа к базе данных, или этот метод вызывается на замкнутом результирующем наборе
что-то вроде этого:
public static void main(String[] args) {
Connection con = null;
Statement st = null;
ResultSet rs = null;
String url = "jdbc:mysql://localhost/t";
String user = "";
String password = "";
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url, user, password);
st = con.createStatement();
rs = st.executeQuery("SELECT * FROM posts ORDER BY id DESC LIMIT 1;");
if (rs.next()) {//get first result
System.out.println(rs.getString(1));//coloumn 1
}
} catch (SQLException ex) {
Logger lgr = Logger.getLogger(Version.class.getName());
lgr.log(Level.SEVERE, ex.getMessage(), ex);
} finally {
try {
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
if (con != null) {
con.close();
}
} catch (SQLException ex) {
Logger lgr = Logger.getLogger(Version.class.getName());
lgr.log(Level.WARNING, ex.getMessage(), ex);
}
}
}
вы можете перебирать результаты с помощью while
такой:
while(rs.next())
{
System.out.println(rs.getString("Colomn_Name"));//or getString(1) for coloumn 1 etc
}
есть много других больших учебник там, как эти, Чтобы перечислить несколько:
- http://www.vogella.com/articles/MySQLJava/article.html
- http://www.java-samples.com/showtutorial.php?tutorialid=9
как за использование Class.forName("com.mysql.jdbc.Driver").newInstance();
посмотреть С JDBC связь - класса.forName vs Class.forName().метод newinstance?, который показывает, как вы можете просто использовать Class.forName("com.mysql.jdbc.Driver")
как его не нужно инициировать самостоятельно
ссылки:
это должно сработать, я думаю...
ResultSet results = st.executeQuery(sql);
if(results.next()) { //there is a row
int id = results.getInt(1); //ID if its 1st column
String str1 = results.getString(2);
...
}
простой метод Java для получения данных из таблицы MySQL:
/*
* CREDIT : WWW.CODENIRVANA.IN
*/
String Data(String query){
String get=null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = (Connection)DriverManager.getConnection
("jdbc:mysql://localhost:3306/mysql","root","password");
Statement stmt = (Statement) con.createStatement();
ResultSet rs=stmt.executeQuery(query);
if (rs.next())
{
get = rs.getString("");
}
}
catch(Exception e){
JOptionPane.showMessageDialog (this, e.getMessage());
}
return get;
}