Nano Hash - криптовалюты, майнинг, программирование

нет такого столбца в таблице SQLite android

привет, я создал таблицу с именем produittable, мне нужно сохранить некоторые данные из editText и после поиска их в списке, но logCat говорит, что нет столбца с именем description_produit, и для меня он есть, не могли бы вы предложить мне, где я ошибаюсь и как починить это.

Это мой logCat ....

android.database.sqlite.SQLiteException: table produittable has no column named quantite_stock (code 1): , while compiling: insert into produittable(nom_produit,quantite_stock,prix_vente,description_produit) values('nokia','15','90','where plz')
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1663)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at com.tabet.salah_projet.ProduitActivity.insert(ProduitActivity.java:165)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at com.tabet.salah_projet.ProduitActivity$3.onClick(ProduitActivity.java:56)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.view.View.performClick(View.java:4202)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.view.View$PerformClick.run(View.java:17340)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.os.Handler.handleCallback(Handler.java:725)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.os.Looper.loop(Looper.java:137)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at android.app.ActivityThread.main(ActivityThread.java:5039)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at java.lang.reflect.Method.invokeNative(Native Method)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at java.lang.reflect.Method.invoke(Method.java:511)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-15 11:34:08.902: E/AndroidRuntime(1003):     at dalvik.system.NativeStart.main(Native Method)

и код базы данных..

public class ProduitActivity extends Activity{
    SQLiteDatabase db;
    @Override   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.produits);
        createDB();
        TextView listeprod =(TextView)findViewById(R.id.link_to_liste);
        listeprod.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {

                Intent i = new Intent(getApplicationContext(), ChecklisteProduit.class);
                startActivity(i); 
            } 
            });


        Button btnAller=(Button)findViewById(R.id.btnAller );
        btnAller.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

            Intent i = new Intent(getApplicationContext(), Stock.class);
            startActivity(i); 
        } 
        });
      //do insert
        Button btnAjout=(Button)findViewById(R.id.btnAjout );
        btnAjout.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

        insert();
        } 
        });
        Button btnClear=(Button)findViewById(R.id.btnClear );
        btnClear.setOnClickListener(new OnClickListener() {
        public void onClick(View arg0) {
        clear();
        }
        }); 
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    CreateMenu(menu);
    return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
    return MenuChoice(item);
    }

    private void CreateMenu(Menu menu)
    {
    MenuItem mnu1 = menu.add(0, 0, 0, "Insert");
    {
    mnu1.setAlphabeticShortcut('i');
    mnu1.setIcon(android.R.drawable.ic_input_add);
    }
    MenuItem mnu2 = menu.add(0, 1, 1, "Search");
    {
    mnu2.setAlphabeticShortcut('s');
    mnu2.setIcon(android.R.drawable.ic_search_category_default);

    }
    MenuItem mnu3 = menu.add(0, 2, 2, "Delete");
    {
    mnu3.setAlphabeticShortcut('d');
    mnu3.setIcon(android.R.drawable.ic_delete);

    }
    MenuItem mnu4 = menu.add(0, 3, 3, "View");
    {
    mnu4.setAlphabeticShortcut('d');
    mnu4.setIcon(android.R.drawable.ic_menu_info_details);
    }
    }
    private boolean MenuChoice(MenuItem item)
    {
    Intent intent=new Intent();
    switch (item.getItemId()) {
    case 0:
    insert();
    return true;
    case 1:
     intent.setClass(ProduitActivity.this, Stock.class);
    startActivity(intent);
    return true;
    case 2:
     intent.setClass(ProduitActivity.this, Stock.class);
    startActivity(intent);
    return true;

    case 3:
     intent.setClass(ProduitActivity.this, Stock.class);
    startActivity(intent);
    return true;

    }
    return false;
    }

    public void createDB()
    {
    db=openOrCreateDatabase("produitbase.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
    db.setLocale(Locale.getDefault());
    db.setLockingEnabled(true);
    db.setVersion(1);
    String sql="create table if not exists Produittable(id INTEGER PRIMARY KEY AUTOINCREMENT, nom_produit TEXT, quantite_stock TEXT, prix_vente TEXT, description_produit TEXT)";
    db.execSQL(sql);
    }

    public void insert()
    {
     EditText nom_produit=(EditText)findViewById(R.id.Nom_produit);
     EditText quantite_stock=(EditText)findViewById(R.id.quantite_stock);
     EditText prix_vente=(EditText)findViewById(R.id.prix_vente);
     EditText description_produit=(EditText)findViewById(R.id.description_produit);

     if(nom_produit.getText().toString().equals(""))
    {
    Toast.makeText(ProduitActivity.this, "Entrer nom produit.", Toast.LENGTH_SHORT).show();
    }
    else if (quantite_stock.getText().toString().equals(""))
    {
    Toast.makeText(ProduitActivity.this, "Entrer la quantité.", Toast.LENGTH_SHORT).show();
    }
    else if (prix_vente.getText().toString().equals(""))
    {
    Toast.makeText(ProduitActivity.this, "Entrer prix de vente.", Toast.LENGTH_SHORT).show();
    }
    else if (description_produit.getText().toString().equals(""))
    {
    Toast.makeText(ProduitActivity.this, "Entrer la description.", Toast.LENGTH_SHORT).show();
    }
    else 
    {

    String sql="insert into produittable(nom_produit,quantite_stock,prix_vente,description_produit) values('"+ nom_produit.getText().toString() +"','"+ quantite_stock.getText().toString() +"','"+ prix_vente.getText().toString() +"','"+ description_produit.getText().toString()+"')";
    db.execSQL(sql);
    clear();
    Toast.makeText(ProduitActivity.this, "Produit Ajouté.", Toast.LENGTH_SHORT).show();
    } 
    }
    public void clear()
    {
     EditText nom_produit=(EditText)findViewById(R.id.Nom_produit);
    EditText quantite_stock=(EditText)findViewById(R.id.quantite_stock);
    EditText prix_vente=(EditText)findViewById(R.id.prix_vente);
    EditText description_produit=(EditText)findViewById(R.id.description_produit);

    nom_produit.setText("");
    quantite_stock.setText(""); 
    prix_vente.setText("");
    description_produit.setText("");

    nom_produit.clearFocus();
    quantite_stock.clearFocus();
    prix_vente.clearFocus();
    description_produit.clearFocus();

    nom_produit.requestFocus();
  }
@Override
    public void onDestroy()
    {
    super.onDestroy();
    db.close();
    }   
}

  • Проверьте правильное имя столбца при создании таблицы. он должен совпадать при вставке. 15.05.2013
  • если вы редактируете свою базу данных, вам нужно удалить приложение с устройства или эмулятора, а затем попытаться запустить 15.05.2013
  • Опубликуйте часть кода, где вы создали эту таблицу 15.05.2013
  • я сделал это, это показало ту же проблему, почему он говорит, что нет такого столбца с именем description_produit, и я объявил его в строке sql = создать таблицу, если не существует Produittable (id INTEGER PRIMARY KEY AUTOINCREMENT, nom_produit TEXT, quantite_stock TEXT, prix_vente TEXT, description_produit TEXT) ; 15.05.2013
  • Я единственный, кто понимает, что ваш логарифм говорит, что столбец quantite_stock не существует? 15.05.2013

Ответы:


1

Ваш create SQL начинается с CREATE TABLE IF NOT EXISTS. Итак, я предполагаю, что вы добавили столбец quantite_stock, когда на устройстве уже была эта таблица. Если это так, то просто переустановите приложение — оно удалит БД, поэтому вы можете быть уверены, что таблица будет создана с обновленными столбцами таблицы.

15.05.2013
  • много думает, что это работает, я переустановил его и обнаружил небольшую проблему в таблице, где я забыл вставить ' ‹--- что 15.05.2013
  • Когда я соединяю часть, которая работает с другой частью моего приложения, я получаю ту же проблему. Можете ли вы дать мне другое возможное решение? 16.05.2013
  • Хм.. Решена ли проблема, для какой части задан вопрос?? В другой части вашего приложения.. вы получаете ту же ошибку, затем сначала удалите таблицу sqlite через DDMS и проверьте, существует ли правильная структура таблицы. вставьте запрос так, чтобы имя столбца было таким же... 16.05.2013
  • Не забудьте проголосовать/пометить ответ как правильный, если этот пост помог вам решить проблему 16.05.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..