java - ResultSet 的 getString() 方法是否可以用于从 MySQL 表中获取 TEXT 类型列的值?

标签 java mysql jdbc

我正在尝试从 MySQL 数据库的表中检索 TEXT 字段的值。 MySQL版本是5.6.21 & 我正在使用 mysql-connector-java-5.1.18-bin.jar

我的文件如下

import java.sql.*;

public class DatabaseConnection {

    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost/book";

    // database credentials
    static final String USER = "username";
    static final String PASS = "password";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try {

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

            System.out.println("Connecting to database...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            System.out.println("Creating statement...");
            stmt = conn.createStatement();
            String query;
            query = "Select b_name, description columns from brands";
            ResultSet rs = stmt.executeQuery(query);

            while(rs.next()) {

                String first_name = rs.getString("b_name");
                String description = rs.getString("description");

                System.out.println(first_name);
                System.out.println(description);
            }

            rs.close();
            stmt.close();
            conn.close();
        } catch(SQLException se) {
            se.printStackTrace();
        } catch(ClassNotFoundException cnfe) {
            cnfe.printStackTrace();
        }
        finally{
            //finally block used to close resources
            try{
                if(stmt!=null)
                    stmt.close();
            } catch(SQLException se2){
            }// nothing we can do
            try{
                if(conn!=null)
                    conn.close();
            } catch(SQLException se){
                se.printStackTrace();
            }//end finally try
        }//end try
        System.out.println("Goodbye!");
    }
}

虽然我已经在另一个表上尝试过,但它表示我的列不存在,它适用于 VARCHAR 列但不适用于 TEXT 列

出现此错误:

但表中有一列名为 description:

最佳答案

问题不在于列类型是文本。 您可以使用 getString 获取 TEXT 类型的值。 您可以在 documentation 中验证.

问题出在查询中:

query = "Select b_name, description columns from brands";

“列”有错误。 这样写,description 列实际上在您的结果集中重命名为 columns。 如果您执行了 rs.getString("columns"),您将获得该值。 但这不是您想要做的。你想通过删除那个词来修复查询:

query = "Select b_name, description from brands";

关于java - ResultSet 的 getString() 方法是否可以用于从 MySQL 表中获取 TEXT 类型列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45125244/

相关文章:

java - JDO 与 hibernate 集成

java - 如何获取多选的选中项目(android)?

php - 即使某些行已被删除,我如何获取上一行和下一行?

Java/SQL : Is it mandatory to close() a ResultSet/Statement/Connection?

java - 尝试更新 mysql 驱动程序以摆脱 java.sql.SQLFeatureNotSupportedException

java - 如何防止JSP中的SQL注入(inject)?

java - 如何获取所有别名形式ImmutableOpenMap <String,List <AliasMetaData >>

java - 为什么从类构造函数调用的方法应该是最终的?

mysql - 更改MySQL的varchar大小

mysql - 如何从表中获取最新日期数据