我正在尝试学习如何在Java程序中使用sqlite数据库。(不是Android)。我转到此链接,下载了jdbc库并复制了示例。该示例工作无误。然后,我向数据库中添加了另一个表,并希望将两个表连接起来,并从每个表中选择一次列。我在从数据库进行查询的行上收到错误no
such column:
'person.name'。我尝试了多种不同的方式来联接表和进行选择,但是每次我遇到异常时Table.columnName。有人可以告诉我正确的语法以在sqlite中联接两个表吗?这是我的代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Sample
{
public static void main(String[] args) throws ClassNotFoundException
{
// load the sqlite-JDBC driver using the current class loader
Class.forName("org.sqlite.JDBC");
Connection connection = null;
try
{
// create a database connection
connection = DriverManager.getConnection("jdbc:sqlite:newSample.db");
Statement statement = connection.createStatement();
statement.setQueryTimeout(30); // set timeout to 30 sec.
statement.executeUpdate("drop table if exists person");
statement.executeUpdate("drop table if exists purchase");
statement.executeUpdate("create table person (id integer, name string)");
statement.executeUpdate("create table purchase (id integer, name string)");
statement.executeUpdate("insert into purchase values(1, 'shampoo')");
statement.executeUpdate("insert into purchase values(1, 'cheese')");
statement.executeUpdate("insert into purchase values (2, 'cherries')");
statement.executeUpdate("insert into purchase values (3, 'yogurt')");
statement.executeUpdate("insert into purchase values (3, 'butter')");
statement.executeUpdate("insert into person values(1, 'leo')");
statement.executeUpdate("insert into person values(2, 'yui')");
statement.executeUpdate("insert into person values(3, 'Steve')");
ResultSet rs = statement.executeQuery("select purchase.name, person.name from
purchase inner join person on person.id = purchase.id");
while(rs.next())
{
// read the result set
System.out.println("name = " + rs.getString("person.name"));
System.out.println("id = " + rs.getInt("person.id"));
System.out.println("purchase = " + rs.getString("purchase.name"));
}
}
catch(SQLException e)
{
// if the error message is "out of memory",
// it probably means no database file is found
System.err.println(e.getMessage());
}
finally
{
try
{
if(connection != null)
connection.close();
}
catch(SQLException e)
{
// connection close failed.
System.err.println(e);
}
}
}}