我已经连接到一个MySQL数据库,该数据库包含四个字段(第一个字段是ID,后一个字段每个都包含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();
干得好 :
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.getInt
rs.getString
column_id
1
column_name
table
index
column
更新: rs.next
rs.next
boolean next()抛出SQLException 将光标从当前位置向前移动一排。ResultSet游标最初位于第一行之前;第一个对方法的调用接下来使第一行成为当前行;第二个调用使第二行成为当前行,依此类推。 当对next方法的调用返回false时,光标将位于最后一行之后。任何需要当前行的ResultSet方法调用都会导致抛出SQLException。如果结果集类型为TYPE_FORWARD_ONLY,则由供应商指定其JDBC驱动程序实现将返回false还是在后续对next的调用上引发SQLException。 如果为当前行打开了输入流,则对next方法的调用将隐式将其关闭。读取新行时,将清除ResultSet对象的警告链。 返回:如果新的当前行有效,则返回true;否则返回false。如果没有更多行,则返回false抛出:SQLException- 如果发生数据库访问错误或在封闭的结果集上调用此方法
boolean next()抛出SQLException
将光标从当前位置向前移动一排。ResultSet游标最初位于第一行之前;第一个对方法的调用接下来使第一行成为当前行;第二个调用使第二行成为当前行,依此类推。
当对next方法的调用返回false时,光标将位于最后一行之后。任何需要当前行的ResultSet方法调用都会导致抛出SQLException。如果结果集类型为TYPE_FORWARD_ONLY,则由供应商指定其JDBC驱动程序实现将返回false还是在后续对next的调用上引发SQLException。
如果为当前行打开了输入流,则对next方法的调用将隐式将其关闭。读取新行时,将清除ResultSet对象的警告链。
返回:如果新的当前行有效,则返回true;否则返回false。如果没有更多行,则返回false抛出:SQLException- 如果发生数据库访问错误或在封闭的结果集上调用此方法
参考