【问题标题】:Android JDBC : Some issues with using MySql JDBC in EclipseAndroid JDBC:在 Eclipse 中使用 MySql JDBC 的一些问题
【发布时间】:2014-04-18 12:25:59
【问题描述】:

我在 Windows 中使用 Eclipse,我想连接到 MySql DB。 我知道我应该使用 JDBC。但是我不知道怎么用!

我已经从 JDBC download page 下载了 msi 和 zip 文件。

在 zip 文件中,存在一个具有此名称的文件:mysql-connector-java-5.1.30-bin.jar 我该怎么办?

我的意思是我在哪里复制/导入(在文件夹或 Eclipse 中)这个文件

请注意,我有这个代码:

import android.os.Bundle;
import android.app.Activity;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import android.os.AsyncTask;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class LearningActivity extends Activity {

    private static final String url = "jdbc:mysql://cool/app";
    private static final String user = "user";
    private static final String pass = "password";

    private Button button;
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button = (Button)this.findViewById(R.id.button1);
        tv = (TextView)this.findViewById(R.id.textView1);

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click
                Connect();
            }
        });
    }

    public void Connect() {
        Connect task = new Connect();
        task.execute();
    }

    private class Connect extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {
            String response = "";

            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = DriverManager.getConnection(url, user, pass); 

                String result = "Database connection success\n";
                Statement st = con.createStatement();
                ResultSet rs = st.executeQuery("select * from users");
                ResultSetMetaData rsmd = rs.getMetaData();

                while(rs.next()) {
                    result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n";
                    result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n";
                    result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n";
                }
                tv.setText(result);
            }
            catch(Exception e) {
                e.printStackTrace();
                tv.setText(e.toString());
            }
            return response;
        }

        @Override
        protected void onPostExecute(String result) {
            tv.setText(result);
        }
    }
}

但我收到此错误:ClassNotFoundException:com.mysql.jdbc.Driver

【问题讨论】:

  • 你是用maven/ant之类的系统编译还是这个独立项目?
  • @DeepakBala :不,这是一个独立的项目。我用 AVD 运行它。
  • AVD ?这是一个安卓项目?你在你的 android 项目中看到一个名为libs 的文件夹吗?你把罐子放在那里了吗?
  • 是的,兄弟。这是一个安卓应用程序。 :) 让我检查一下它是否存在...
  • 没有。没有像 libs 这样的文件夹。仅存在以下文件夹:src、gen、res 和 assets

标签: java mysql eclipse jdbc


【解决方案1】:

与@Ali 的一次离线讨论显示他使用的是旧版本的 ADT,它不会创建 libs 文件夹,如 android developers web site 上的文件夹层次结构所示

手动创建此文件夹为他解决了问题。

注意:文件夹的名称是 libs,末尾带有“s”。很容易忽略这一点并改为创建lib

【讨论】:

    【解决方案2】:

    我将它们放在我的 eclipse 项目中的 lib 目录中,然后将 jar 添加到我的构建路径中。

    【讨论】:

    • 我的 JDBC 连接是通过 Spring 进行的,所以,我不能再帮你了。
    • 问题解决了我的朋友。 :) 我添加了一个文件夹 libs 并将 jar 文件复制到其中,然后将其添加到 JavaBuildPath。
    猜你喜欢
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2015-07-17
    • 2011-06-11
    • 2011-02-09
    • 2011-07-29
    • 1970-01-01
    相关资源
    最近更新 更多