从数据库

时间:2017-01-05 19:29:10

标签: android sql

我试图使用SELECT * from book从表中提取所有数据,但我得到了:

  

尝试调用接口方法' java.sql.ResultSet java.sql.Statement.executeQuery(java.lang.String)'在空对象引用上

我在Eclipse中触发SQL语句时使用它。我试图在Android Studio中重新创建它,但似乎抛出了这个问题。任何帮助表示赞赏。

SQL.java

package com.example.andy.loginapp;

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

/**
 * Created by Andy on 1/4/2017.
 */
public class SQL {

    private Statement st;
    private Connection con;
    private ResultSet rs;


    public SQL(){
try {
Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sqltest", "root", "");
    st = con.createStatement();

}
catch(Exception e){
System.out.println(e);


    }
}




    public void getData(){
        try{
            String query = "SELECT * from book";
            String queryInsert = "INSERT into Book " + "VALUE(authorField.getText(), titleField.getText(), yearField.getText())";
            rs = st.executeQuery(query);
            while(rs.next()){
                String author = rs.getString("author");
                String title = rs.getString("title");
                System.out.println("Author: " + author + " " + "Title" + " " + title);

            }
        }
        catch(Exception e){

            System.out.println(e);
        }
        System.out.println("success");
    }

    }

MainActivity.java

 package com.example.andy.loginapp;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutCompat;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;


import org.w3c.dom.Text;

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

public class MainActivity extends AppCompatActivity {
private Statement st;
    private Connection con;
    private ResultSet rs;
TextView hi;
    RelativeLayout background;
    Button sqlButton;
SQL data = new SQL();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        sqlButton = (Button) findViewById(R.id.sqlButton);


      sqlButton.setOnClickListener(new View.OnClickListener(){


          @Override
          public void onClick(View v) {
data.getData();
          }
      });



    }



}

1 个答案:

答案 0 :(得分:1)

您必须编写一个Web服务来连接任何外部数据库(如MYSQL)以将Android应用程序连接到数据库。它还涉及编写一个非常基本的PHP脚本。

有关示例,请参阅以下链接。 https://www.b4x.com/android/forum/threads/connect-android-to-mysql-database-tutorial.8339/

http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/

除非绝对必要,否则最好不要使用SQLLite。