8

4 つのフィールドを含む MySQL データベースに接続しました (最初のフィールドは ID、後者はそれぞれ varchar 文字列を含みます)。

データベースの最後の行を取得し、フィールドの内容を取得して、それらを変数 (int と 3 つの文字列) に設定し、後で使用できるようにしようとしています。

ここまでで、接続を確立するための最低限の作業が完了しました。ここからどこへ行くのでしょうか? ご覧のとおり、最後の行を取得するために 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

6 に答える 6

15

どうぞ :

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_id1column_nametableindexcolumn

アップデート : rs.next

ブール値の next() は SQLException をスローします

カーソルを現在の位置から 1 行前方に移動します。ResultSet カーソルは、最初は最初の行の前に配置されます。メソッド next の最初の呼び出しでは、最初の行が現在の行になります。2 番目の呼び出しでは、2 番目の行が現在の行になります。

next メソッドの呼び出しが false を返すと、カーソルは最後の行の後に配置されます。現在の行を必要とする ResultSet メソッドを呼び出すと、SQLException がスローされます。結果セットのタイプが TYPE_FORWARD_ONLY の場合、JDBC ドライバーの実装が false を返すか、後続の next への呼び出しで SQLException をスローするかは、ベンダーによって指定されます。

入力ストリームが現在の行に対して開いている場合、メソッド next を呼び出すと暗黙的に閉じられます。新しい行が読み取られると、ResultSet オブジェクトの一連の警告がクリアされます。

戻り値: 新しい現在の行が有効な場合は true。これ以上行がない場合は false 例外: SQLException - データベース アクセス エラーが発生した場合、またはこのメソッドがクローズされた結果セットで呼び出された場合

参照

于 2012-08-20T16:36:02.563 に答える
3

次のようなことができます:

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
}

いくつかをリストするために、これらのような他にも多くの優れたチュートリアルがあります。

あなたの使用については、JDBC接続をClass.forName("com.mysql.jdbc.Driver").newInstance();参照してください- Class.forName vs Class.forName().newInstance? Class.forName("com.mysql.jdbc.Driver")これは、自分で開始する必要がないため、どのように使用できるかを示しています

参考文献:

于 2012-08-20T16:21:36.220 に答える
1

これはうまくいくはずです...

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);
 ...
}
于 2012-08-20T16:26:18.060 に答える
0

MySQL テーブルからデータを取得する簡単な Java メソッド:

/*
 * 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;
}
于 2013-10-18T16:53:19.280 に答える
0
  • まず、MySQL コネクタの jar ファイルをダウンロードします。これは、現在の最新の jar ファイル[mysql-connector-java-8.0.21]です。

  • Jar ファイルをワークスペース [ビルド パス] に追加します。

  • 次に、DriverManager クラスから新しい Connection オブジェクトを作成して、この Connection オブジェクトを使用してクエリを実行できるようにします。

  • 接続用のデータベース名、userName、および Password を定義します。

  • データベース テーブルの列名に基づいてデータを取得するには、resultSet を使用します。

サンプルコードは次のとおりです。

public class JdbcMySQLExample{

public static void main(String[] args) {

    String url = "jdbc:mysql://localhost:3306/YOUR_DB_NAME?useSSL=false";
    String user = "root";
    String password = "root";
    
    String query = "SELECT * from YOUR_TABLE_NAME";

    try (Connection con = DriverManager.getConnection(url, user, password);
        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery(query)) {

        if (rs.next()) {
            
            System.out.println(rs.getString(1));
        }

    } catch (SQLException ex) {
          System.out.println(ex);
       
    } 
}
于 2020-11-25T07:10:18.957 に答える