PreparedStatement ps2;
ResultSet rs2;
String username = jTextField_username.getText();
String userpassword = jTextField_userpassword.getText();
String sql = "SELECT distinct kalanizin from users where username =?";
String[] resultsetarray = null;
try {
ps2 = MyConnection.getConnection().prepareStatement(sql);
ps2.setString(1, username);
rs2 = ps2.executeQuery();
String result = rs2.getString(0); // i want this String to hold the first result
大家好。我有一个问题一直困扰着我。正如标题中所说,使用JDBC,我想从我的数据库中获取一列。例如
Select * from users where username = "blabla"
我希望Java执行此查询并获取它找到的第一行。然后放入String或Integer。正如您在顶部看到我糟糕的代码,它无法做到这一点。我试图通过使用声明来实现这一点,但它仍然没有奏效。谁能帮我?非常感谢。 PS。抱歉我可怕的变量名称并使用我的本地语言作为变量
答案 0 :(得分:3)
如果您知道列名称您可以使用getString(columnLabel)
之类的方法而不是getString(columnIndex)
:
以Java编程语言中String的形式检索此ResultSet对象的当前行中指定列的值。
columnLabel - 使用SQL AS子句指定的列的标签。如果未指定SQL AS子句,则标签列的名称
答案 1 :(得分:3)
您要求columnIndex=0
的列,但列索引以1
开头
您可以使用此代码,也许我以前用过,查询整个表格
public List<Article> findAll() {
Connection connection = jdbConnectionWrapper.getConnection();
List<Article> articles = new ArrayList<>();
try {
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM article");
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
Article article = new Article();
article.setId(resultSet.getLong(1));
article.setName(resultSet.getString(2));
article.setPrice(resultSet.getInt(3));
articles.add(article);
}
} catch (SQLException e) {
e.printStackTrace();
}
return articles;
}
答案 2 :(得分:2)
我的方法是:
1)限制查询。您可以将限制添加为1作为查询。我会鼓励你阅读它,而不是提供样品。
2)例如,仅获取所需的列。
select u.age from users u where u.username=?
然后根据数据类型,您可以从结果集中获取它。
答案 3 :(得分:1)
您错过了ResultSet#next
来电。
根据您的示例代码,您可以执行此操作:
PreparedStatement ps2;
ResultSet rs2;
String username = jTextField_username.getText();
String userpassword = jTextField_userpassword.getText();
String sql = "SELECT distinct kalanizin from users where username =?";
String[] resultsetarray = null;
try {
ps2 = MyConnection.getConnection().prepareStatement(sql);
ps2.setString(1, username);
rs2 = ps2.executeQuery();
if(rs2.next()) { // moving to the first row
String result = rs2.getString(1); // i want this String to hold the first result
} else {
// throw Exception ?
}
} catch (SQLException e) {
e.printStackTrace();
}