java.sql.SQLException:android app中与postgres交互时没有合适的驱动程序错误

时间:2013-10-30 22:22:54

标签: java android sql postgresql jdbc

我正在关注将Android应用程序连接到PostgresSQL数据库的教程,教程在http://appliedcoffeetechnology.tumblr.com/post/10657124340,然后我有以下代码:

package com.example.helllopostgresql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;

public class HelloPostgreSQLActivity extends Activity {
    TextView resultArea;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        resultArea = new TextView(this);
        resultArea.setText("Please wait.");
        setContentView(resultArea);
        new FetchSQL().execute();
    }
    private class FetchSQL extends AsyncTask<Void,Void,String> {
        @Override
        protected String doInBackground(Void... params) {
            String retval = "";
            try {
                Class.forName("org.postgresql.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                retval = e.toString();
            }
            String url = "jdbc:postgresql://10.0.2.2/dbname?user=username&password=pass";
            Connection conn;
            try {
                DriverManager.setLoginTimeout(5);
                conn = DriverManager.getConnection(url);
                Statement st = conn.createStatement();
                String sql;
                sql = "SELECT 1";
                ResultSet rs = st.executeQuery(sql);
                while(rs.next()) {
                    retval = rs.getString(1);
                }
                rs.close();
                st.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                retval = e.toString();
            }
            return retval;
        }
        @Override
        protected void onPostExecute(String value) {
            resultArea.setText(value);
        }
    }
}

应用程序正常启动但在“Please Wait ...”出现后出现错误java.sql.SQLException:No Suitable Driver 当然我用库导入了jar文件,ADT识别它们,因为我可以在“Referenced Libraries”中看到项目结构中的库。 我在网上读到,当没有“Class.forName(”org.postgresql.Driver“)”部分时,错误通常是一个问题。当然我改变了你在代码中可以看到的url字符串中的所有参数。 我能做什么?我真的不知道该怎么办,因为我检查了所有可能的问题,但似乎我无法解决这个问题,而且似乎我正在做的一切正常,我也试过从网站上完整复制/粘贴我联系了!...提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您是否检查过该引用位置的jar文件。

答案 1 :(得分:0)

我解决了这个问题!这是我的错,当我将外部jar添加到库时,它位于项目文件夹之外的路径中! (然而,主要的错误是Eclipse编译项目:-D)我将.jar复制并粘贴到libs目录下的库中,我不再有错误了! 谢谢大家!