2013-10-09 2 views
-1

Я создаю две таблицы, placetypes и таблицу места в моем классе базы данных, и я вставляю записи в таблицы .. первая таблица работает отлично, но при вставке во вторую таблицу она дает мне ошибка .. «нет такой стол место»Sqlite Database android: Нет такой таблицы erroe

пожалуйста, помогите мне, я попытался изменить номер версии, переустановка приложения .. но ничего не работает .. класс базы данных

 package com.example.nearby_places; 

import java.util.ArrayList; 
import java.util.List; 


import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class Database extends SQLiteOpenHelper { 

    //database name & version number 
    private static final String db_name = "nearby_places"; 
    private static final int db_version = 5; 

    //tables 
    private static final String table_placetypes = "placetypes"; 
    private static final String table_places = "places"; 

    //column names 
    private static final String type_id = "type_id"; 
    private static final String type_name = "type_name"; 
    private static final String place_id = "place_id"; 
    private static final String place_name = "place_name"; 
    private static final String place_address = "place_address"; 
    private static final String place_contact = "place_contact"; 


    public Database(Context context) { 
     super(context, db_name, null, db_version); 
     // TODO Auto-generated constructor stub 
    } 

    // create table queries 
    String create_table_placetypes = "CREATE TABLE IF NOT EXISTS " + table_placetypes + "(" 
      + type_id + " INTEGER PRIMARY KEY NOT NULL," + type_name + " TEXT" + ")"; 



    String create_table_places = "CREATE TABLE IF NOT EXISTS table_places (type_id INTEGER, " + 
      "place_id INTEGER PRIMARY KEY NOT NULL, place_name TEXT, " + 
      "place_address TEXT, place_contact TEXT, " + 
      "FOREIGN KEY (type_id) REFERENCES table_placetypes(type_id))"; 



    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 

     db.execSQL(create_table_placetypes); 

     Log.d("creating", "placetypes created"); 
     db.execSQL(create_table_places); 
     Log.d("creating", "places created"); 


    } 


    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     db.execSQL("DROP TABLE IF EXISTS " + table_placetypes); 
     db.execSQL("DROP TABLE IF EXISTS " + table_places); 
     onCreate(db); 

    } 
    // add placetypes 
    void addplacetypes (placetypes pt) { 

     SQLiteDatabase db = getWritableDatabase(); 
     ContentValues values = new ContentValues(); 

     values.put(type_name, pt.getTypename()); 

     db.insert(table_placetypes, null, values); 
     db.close(); 

    } 

    // Getting single placetypes 
    placetypes getPlacetypes(int id) { 
     SQLiteDatabase db = this.getReadableDatabase(); 

     Cursor cursor = db.query(table_placetypes, new String[] {type_id, 
       type_name }, type_id + "=?", 
       new String[] { String.valueOf(id) }, null, null, null, null); 
     if (cursor != null) 
      cursor.moveToFirst(); 

     placetypes pt = new placetypes(Integer.parseInt(cursor.getString(0)), 
       cursor.getString(1)); 
     // return contact 
     return pt; 
    } 

// Getting All placetypes 
    public List<placetypes> getAllPlacetypes() { 
     List<placetypes> placetypesList = new ArrayList<placetypes>(); 
     // Select All Query 
     String selectQuery = "SELECT * FROM " + table_placetypes; 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 
       placetypes pt = new placetypes(); 
       pt.setTypeid(Integer.parseInt(cursor.getString(0))); 
       pt.setTypename(cursor.getString(1)); 


       String name = cursor.getString(1); 

       //MainActivity.ArrayofName.add(name); 
       // Adding contact to list 
       placetypesList.add(pt); 
      } while (cursor.moveToNext()); 
     } 

     // return placetype list 
     return placetypesList; 
} 

    // Getting placetypes Count 
    public int getPlacetypesCount() { 
     String countQuery = "SELECT * FROM " + table_placetypes; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(countQuery, null); 
     cursor.close(); 

     // return count 
     return cursor.getCount(); 
    } 

    public void addplaces(places p) { 
     SQLiteDatabase db = getWritableDatabase(); 
     ContentValues values = new ContentValues(); 
     values.put(place_name, p.getPlace_name()); 
     values.put(place_address, p.getPlace_address()); 
     values.put(place_contact, p.getPlace_contact()); 

     db.insert(table_places, null, values); 
     db.close(); 

    } 

    places getPlaces(int pid) { 

     SQLiteDatabase db = getReadableDatabase(); 
     Cursor cursor = db.query(table_places, new String[] {place_id, place_name, place_address, place_contact}, place_id + "=?", new String[] { String.valueOf(pid) } , null, null, null, null); 

     if(cursor != null) 
      cursor.moveToFirst(); 

     places p = new places(Integer.parseInt(cursor.getString(0)), 
       cursor.getString(1), 
       cursor.getString(2), 
       cursor.getString(3) 
       ); 

     return p; 

    } 

    public List<places> getAllPlaces() { 

     List<places> placeList = new ArrayList<places>(); 
     String selectQuery = "SELECT * FROM " + table_places; 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     if(cursor.moveToFirst()) { 
      do{ 
      places p = new places(); 
      p.setPlace_id(Integer.parseInt(cursor.getString(0))); 
      p.setPlace_name(cursor.getString(1)); 
      p.setPlace_address(cursor.getString(2)); 
      p.setPlace_contact(cursor.getString(3)); 

      String p_name = cursor.getString(1); 
      String p_address = cursor.getString(2); 
      String p_contact = cursor.getString(3); 

      placeList.add(p); 
      }while(cursor.moveToNext()); 
     } 
     return placeList; 
    } 

    public int getPlaceCount() { 

     String selectQuery = "SELECT * FROM " +table_places; 
     SQLiteDatabase db = getReadableDatabase(); 
     Cursor cursor = db.rawQuery(create_table_places, null); 
     cursor.close(); 

     return cursor.getCount(); 
    } 

} 

main activity 
      package com.example.nearby_places; 

import java.util.ArrayList; 
import java.util.List; 


import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 

public class MainActivity extends Activity { 

    private ListView listView; 
    public static ArrayList<String> ArrayofName = new ArrayList<String>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Database db = new Database(this); 
     if(db.getAllPlacetypes().isEmpty()) 
     { 
     /** 
      * CRUD Operations 
      * */ 
      // Inserting Places 
      Log.d("Insert: ", "Inserting .."); 
      db.addplacetypes(new placetypes("RESTURAUNTS")); 
      db.addplacetypes(new placetypes("MALLS")); 
      db.addplacetypes(new placetypes("GAS STATIONS")); 
      db.addplacetypes(new placetypes("HOTELS")); 
      db.addplacetypes(new placetypes("MOTELS")); 
     } 
      // Reading all Places 
      Log.d("Reading: ", "Reading all placetypes.."); 

      if(ArrayofName.isEmpty()) 
      { 
       List<placetypes> placetypes = db.getAllPlacetypes(); 
       for (placetypes pt : placetypes) 
       { 
        String log = "Id: "+pt.getTypeid()+" ,Name: " + pt.getTypename(); 
        // Writing Places to log 
        Log.d("Name: ", log); 
        System.out.println(log); 
        ArrayofName.add(pt.getTypename()); 
       } 
      } 

      listView = (ListView) findViewById(R.id.listView1); 

      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, ArrayofName); 

      listView.setAdapter(adapter); 

      listView.setOnItemClickListener(new OnItemClickListener() 
       { 
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
        { 
         Toast.makeText(getApplicationContext(), ((TextView) v).getText(), Toast.LENGTH_SHORT).show(); 
         // Intent i = new Intent(this,Activity2.class); 
         // startActivity(i); 
         Intent intent = new Intent(MainActivity.this, MainActivity2.class); 
         startActivity(intent); 


        } 
       } 
      ); 
    } 

    } 


mainactivity2 

     package com.example.nearby_places; 

import java.util.ArrayList; 
import java.util.List; 


import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 

public class MainActivity2 extends Activity { 

    private ListView listView; 
    public static ArrayList<String> ArrayofName = new ArrayList<String>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Database db = new Database(this); 
     if(db.getAllPlaces().isEmpty()) 
     { 
     /** 
      * CRUD Operations 
      * */ 
      // Inserting Places 
      Log.d("Insert: ", "Inserting .."); 
      db.addplaces(new places("Pizza Hut", "Clifton", "12345678")); 
      /* db.addplacetypes(new placetypes("MALLS")); 
      db.addplacetypes(new placetypes("GAS STATIONS")); 
      db.addplacetypes(new placetypes("HOTELS")); 
      db.addplacetypes(new placetypes("MOTELS")); 
     */} 
      // Reading all Places 
      Log.d("Reading: ", "Reading all places.."); 

      if(ArrayofName.isEmpty()) 
      { 
       List<places> places = db.getAllPlaces(); 
       for (places p : places) 
       { 
        String log = "Id: "+p.getPlace_id() +" ,Name: " + p.getPlace_name() +" ,ADDRESS: " + p.getPlace_address() +"CONTACT NO. : " +p.getPlace_contact(); 
        // Writing Places to log 
        Log.d("Name: ", log); 
        Log.d("ADDRESS: ", log); 
        Log.d("CONTACT NO : ", log); 

        System.out.println(log); 
        ArrayofName.add(p.getPlace_name()); 
        ArrayofName.add(p.getPlace_address()); 
        ArrayofName.add(p.getPlace_contact()); 
       } 
      } 

      listView = (ListView) findViewById(R.id.listView1); 

      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, ArrayofName); 

      listView.setAdapter(adapter); 

      listView.setOnItemClickListener(new OnItemClickListener() 
       { 
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
        { 
         Toast.makeText(getApplicationContext(), ((TextView) v).getText(), Toast.LENGTH_SHORT).show(); 
         // Intent i = new Intent(this,Activity2.class); 
         // startActivity(i); 
         // Intent intent = new Intent(MainActivity.this, Activity2.class); 
         // startActivity(intent); 


        } 
       } 
      ); 
    } 

    } 



kindly help me resolving this issue so i may proceed my other work. THANKS IN ADVANCE 
+0

Добро пожаловать в StackOverflow. Я отметил, что ваш вопрос будет закрыт. Это потому, что в настоящее время вы разместили очень большой объем кода и сообщение об ошибке, а также вопрос «что не так?» StackOverflow работает лучше всего, если у вас есть образец кода __small__, который четко показывает проблему, с которой вы сталкиваетесь. Я бы рекомендовал прочитать [SSCCE] (http://sscce.org/). Это руководство даст вам идеи о том, как разбить код, чтобы найти конкретную проблему. Как сейчас, сейчас слишком много происходит для большинства людей, которые хотят просмотреть вашу ошибку. –

+0

Это свалка кода, бесполезная для всех, кроме афера. Материал, который не может удаленно помочь кому-либо, но не может быть приглашен. –

ответ

0
String create_table_placetypes = "CREATE TABLE " + table_placetypes + "(..." 
String create_table_places  = "CREATE TABLE table_places (..." 

Вы никогда не создать таблицу имен places; вторая команда создает таблицу с именем table_places.

+0

Thankyou, его решила :) –

+0

, но теперь его дает мне ошибку при чтении мест –

+0

Является ли ограничение внешнего ключа ок? потому что когда я пытаюсь вставить запись, это дает мне ошибку –

0

у меня была аналогичная проблема , я изменил свои запросы, и он работал хорошо, в большинстве случаев, когда мы пытаемся ввести данные через значения контента, которые он дает нам erro r, поэтому используйте прямой запрос для вставки. увидеть этот запрос для помощи

void addContact(Contact contact) { 
    SQLiteDatabase db = this.getWritableDatabase(); 


    db.execSQL("insert into contacts (name,author,company,address,email,website,phone_number,script) VALUES (" + "'" + contact.get_name() + "'," + "'" + contact.get_author() + "'," + "'" + contact.get_company() + "'," + "'" + contact.get_address() + "'," + "'" + contact.get_email() + "'," + "'" + contact.get_website() + "'," + "'" + contact.get_phone_number() + "'," + "'" + contact.getscript() + "'" + ")"); 

} 

Также проверьте свой класс контейнера, проверьте, если все члены правильно инициализирован там

+0

такой же ошибка. did not работал –

+0

изменить запрос. например, db.execSQL ("insert into yourtablename (column1, column2) VALUES (" + "'" + contact.getvalue1()) + "'," + "'" + contact.getvalue2() + "'" + ") «); –

Смежные вопросы