Java 打开跟踪文件时出错:没有这样的文件或目录(2)(1)没有这样的表:ContactListTable尝试了数小时找不到解决方案

Java 打开跟踪文件时出错:没有这样的文件或目录(2)(1)没有这样的表:ContactListTable尝试了数小时找不到解决方案,java,android,android-listview,runtime-error,forceclose,Java,Android,Android Listview,Runtime Error,Forceclose,我不熟悉android和java。我试图对照一个示例检查我的代码,但不知何故,当示例运行良好时,应用程序保持强制关闭。我需要帮助!提前谢谢 新Logcat Contacts.java package com.Elson.ProjectVersion; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHe

我不熟悉android和java。我试图对照一个示例检查我的代码,但不知何故,当示例运行良好时,应用程序保持强制关闭。我需要帮助!提前谢谢

新Logcat

Contacts.java

 package com.Elson.ProjectVersion;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteException;
import android.util.Log;

public class Contacts implements Comparable<Contacts> {

    private long id;
    private String name;
    private int Phone;
    private int Email;
    private Date date;
    private double runningAverage;




    public Contacts(String name, int Phone,  Date date) {
        this.name = name;
        this.Phone = Phone;
        this.date = date;
    }

    public Contacts(long id, String name,int Phone) {
        this.id=id;
        this.Phone=Phone;
        this.name= (name);

    }


    public long getId() {

        return id;
    }
    public void setId(long id) {
        this.id = id;
    }

    public int getPhone() {
        return Phone;
    }
    public void setPhone(int Phone) {
        this.Phone = Phone;
    }
    public String getname() {
        return name;
    }
    public void setname(String name) {
        this.name = name;
    }
    public Date getDate() {
        return date;
    }

    public long getDateEpoch(){
        return date.getTime()/1000;
    }
    public void setDateEpoch(long seconds){
        date= new Date (seconds*1000);
    }
    public void setDate(Date date) {
        this.date = date;
    }




    public void setRunningAverage(double runningAverage) {
        this.runningAverage = runningAverage;
    }
    public boolean equals(Object that){
        Contacts bs = (Contacts) that;

        return this.date.equals(bs.date);
      }


    @Override



    public String toString() {
        String result;

        // "ID" + id +" "
        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
        result = df.format(date) + "" + name + "" + Phone ; 



        return result;
    }

    @Override
    public int compareTo(Contacts another) {
        // TODO Auto-generated method stub
        return 0;
    }
公共类MyContactSQL扩展了SQLiteOpenHelper{

public static final String DB_NAME ="MyContactSQL.SQLite";
public static final int DB_VERSION = 1;
public static String CONTACT_LIST_TABLE = "ContactListTable";
public static String RECORD_ID ="ID";
public  static String NAME = "NAME";
public static String PHONE_NUMBER="PhoneNumber";

public MyContactSQL(Context context) {
    super(context, DB_NAME, null, DB_VERSION);

}

@Override
public void onCreate(SQLiteDatabase contactListDB) {


    String sqlStatement = "create table " + CONTACT_LIST_TABLE 
            + " ("
            + RECORD_ID + " integer primary key autoincrement not null,"
            + NAME + " long,"
            + PHONE_NUMBER +" integer"
            +");";


           Log.d("Contact Database", sqlStatement);

           contactListDB.execSQL(sqlStatement);

}

@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

}
}

历史活动

 import java.util.ArrayList;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle; 
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class HistoryActivity extends ListActivity {

Bundle savedInstanceState;
private ArrayList <Contacts> allContacts;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.savedInstanceState = savedInstanceState;
    setContentView(R.layout.history_layout);

    //get data from the App
    ContactsActivityApplication app = (ContactsActivityApplication) getApplication();
    allContacts = app.getAllContacts();


    //View  --- Adapter  ------ Data 

    setListAdapter(
            new ArrayAdapter<Contacts> (this, R.layout.history_row,
                    allContacts
                    ));

        ListView listView = this.getListView();
        listView.setOnItemClickListener(
                 new OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {
                        verifyDeleteRow(position);
                        Log.d("DEBUG", "I hear item selected:" + position);
                        // TODO Auto-generated method stub

                    }

                 }

                 );
}

private void verifyDeleteRow(final int position){
    //pop up a dialog to confirm delete row
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Delete this Series?")
           .setMessage("Do you want to delete this data?" + allContacts.get(position))
           .setCancelable(false)
           .setNegativeButton("NO! Leave it there!", 

                   new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.cancel(); 
                }
            })
           .setPositiveButton("Delete", 

            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {

                    Contacts toDelete = allContacts.get(position);

                    ContactsActivityApplication app = (ContactsActivityApplication) getApplication();
                    app.deleteBowlingScores(toDelete);
                    // TODO Auto-generated method stub
                    onCreate(savedInstanceState);
                }
            });

    AlertDialog alert = builder.create();
    alert.show();

}
}

在SQLHelper类中,您已经用引号中的DB_名称创建了数据库。这意味着您的dbname将是DB_Name

super(context, "DB_NAME", null, DB_VERSION);
你喜欢这样吗

super(context, DB_NAME, null, DB_VERSION);

希望能有帮助

错误显示数据库中没有名为ContactListTable的表。我知道。但我该如何解决这个问题呢?我确实在代码中创建了。您是否检查过数据库中是否有已创建的表?现在我遇到了此错误>>tableContactListTable附近的E/SQLiteLog20989:1:syntax errorcreate table然后需要空间。如下所示创建表+表名E/Trace23021:打开跟踪文件时出错:没有这样的文件或目录2 D/Contact Database23021:创建表ContactListTable ID integer主键自动递增非空、名称整数、电话号码整数;E/SQLiteLog23021:1仅允许在整数主键上自动递增这是否意味着未创建我的DB文件?因为我的手机已根目录,无法访问文件资源管理器。我正在使用某个应用程序打开DB文件。你写的整数拼写错误。当然,如果出现错误,则不会创建表。07-31 15:12:18.685:W/dalvikvm6948:threadid=1:thread退出时未捕获异常组=0x40fdb2a0 07-31 15:12:18.720:E/AndroidRuntime6948:FATAL异常:main 07-31 15:12:18.720:E/AndroidRuntime6948:java.lang.IllegalStateException:无法执行活动的方法当我点击保存按钮时,我得到了这个-。-!但应用程序正在运行。谢谢你这么耐心。
public static final String DB_NAME ="MyContactSQL.SQLite";
public static final int DB_VERSION = 1;
public static String CONTACT_LIST_TABLE = "ContactListTable";
public static String RECORD_ID ="ID";
public  static String NAME = "NAME";
public static String PHONE_NUMBER="PhoneNumber";

public MyContactSQL(Context context) {
    super(context, DB_NAME, null, DB_VERSION);

}

@Override
public void onCreate(SQLiteDatabase contactListDB) {


    String sqlStatement = "create table " + CONTACT_LIST_TABLE 
            + " ("
            + RECORD_ID + " integer primary key autoincrement not null,"
            + NAME + " long,"
            + PHONE_NUMBER +" integer"
            +");";


           Log.d("Contact Database", sqlStatement);

           contactListDB.execSQL(sqlStatement);

}

@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

}
 import java.util.ArrayList;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle; 
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class HistoryActivity extends ListActivity {

Bundle savedInstanceState;
private ArrayList <Contacts> allContacts;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.savedInstanceState = savedInstanceState;
    setContentView(R.layout.history_layout);

    //get data from the App
    ContactsActivityApplication app = (ContactsActivityApplication) getApplication();
    allContacts = app.getAllContacts();


    //View  --- Adapter  ------ Data 

    setListAdapter(
            new ArrayAdapter<Contacts> (this, R.layout.history_row,
                    allContacts
                    ));

        ListView listView = this.getListView();
        listView.setOnItemClickListener(
                 new OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {
                        verifyDeleteRow(position);
                        Log.d("DEBUG", "I hear item selected:" + position);
                        // TODO Auto-generated method stub

                    }

                 }

                 );
}

private void verifyDeleteRow(final int position){
    //pop up a dialog to confirm delete row
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Delete this Series?")
           .setMessage("Do you want to delete this data?" + allContacts.get(position))
           .setCancelable(false)
           .setNegativeButton("NO! Leave it there!", 

                   new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.cancel(); 
                }
            })
           .setPositiveButton("Delete", 

            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {

                    Contacts toDelete = allContacts.get(position);

                    ContactsActivityApplication app = (ContactsActivityApplication) getApplication();
                    app.deleteBowlingScores(toDelete);
                    // TODO Auto-generated method stub
                    onCreate(savedInstanceState);
                }
            });

    AlertDialog alert = builder.create();
    alert.show();

}
}
super(context, "DB_NAME", null, DB_VERSION);
super(context, DB_NAME, null, DB_VERSION);