Ошибка записи SQL

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
tolyan
Сообщения: 10
Зарегистрирован: 15 фев 2014, 00:38

Ошибка записи SQL

Сообщение tolyan » 31 мар 2014, 18:41

LOG.png
LOG.png (200.16 КБ) 3792 просмотра
LOG.png
LOG.png (200.16 КБ) 3792 просмотра
LOG.png
LOG.png (200.16 КБ) 3792 просмотра
Привет, подскажите пожалуйста кто знает почему у меня возникает данная ошибка. Спасибо

Код активити

Код: Выделить всё

package com.pr6_writeintent;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Spinner;

public class FourActivity extends Activity {

	 final String LOG_TAG = "myLogs";
	 
	  String[] SSpinnerMaster = {"Вася", "Петя", "Федя", "Коля", "Ваня"};
	  String[] SSpinnerTime = {"9:00", "10:00", "11:00", "12:00"};
	  
		
		String SEditName;
		String SEditTelephone;
		String SEditDate;
		String IntentView;
		DBHelper dbHelper;	 

		  @Override
		  protected void onCreate(Bundle savedInstanceState) {
		    super.onCreate(savedInstanceState);	    
		    setContentView(R.layout.four);
		    
		    dbHelper = new DBHelper(this);
		    

		    //adapter
		    ArrayAdapter<String> AdapterSpinnerMaster = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, SSpinnerMaster);
	        AdapterSpinnerMaster.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	        
	        ArrayAdapter<String> AdapterSpinnerTime = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, SSpinnerTime);
	        AdapterSpinnerTime.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	        
	        final Spinner SpinnerMaster = (Spinner)findViewById(R.id.spinnerMaster);
	        SpinnerMaster.setAdapter(AdapterSpinnerMaster);
	        SpinnerMaster.setPrompt("Master");
	        SpinnerMaster.setSelection(0);
	     
	        SpinnerMaster.setOnItemSelectedListener(new OnItemSelectedListener() {
	        	 @Override
	        	 	public void onItemSelected(AdapterView<?> parent, View view,
	                 int position, long id) {
	                }
	             @Override
	             public void onNothingSelected(AdapterView<?> arg0) {
	             }
			});
	        
	        
	        

	        final Spinner SpinnerTime = (Spinner)findViewById(R.id.spinnerTime);
	        SpinnerTime.setAdapter(AdapterSpinnerTime);
	        SpinnerTime.setPrompt("Time");
	        SpinnerTime.setSelection(0);
	        
	        SpinnerTime.setOnItemSelectedListener(new OnItemSelectedListener() {
	       	 @Override
	       	 	public void onItemSelected(AdapterView<?> parent, View view,
	                int position, long id) {
	               }
	            @Override
	            public void onNothingSelected(AdapterView<?> arg0) {
	            }
			});
	       
	        
	        
		    final EditText EditName = (EditText)findViewById(R.id.editName);
		    final EditText EditTelephone = (EditText)findViewById(R.id.editTelepnone);
		    final EditText EditDate = (EditText)findViewById(R.id.editDate);
		    
		    final Button ButtonWrite = (Button)findViewById(R.id.buttonWrite);
		    
		    
		    
		    
			   ImageButton imgBack = (ImageButton)findViewById(R.id.imageBack);
			   final Intent intentBack = new Intent(this, MainActivity.class);
			   
			   imgBack.setOnClickListener(new OnClickListener() {		   
				@Override
				public void onClick(View v) {
					
			  		startActivity(intentBack);	
				}
			});
		    
		    

			   ///запис в бд
			   ButtonWrite.setOnClickListener(new OnClickListener() {
				
				@Override
				public void onClick(View v) {	
							
					Intent intent = getIntent();			    
				    IntentView = intent.getStringExtra("intentView");
					//ButtonWrite.setText(IntentView.toString());
				//	String stringView = IntentView;
					ContentValues cv = new ContentValues();
					
					SEditDate = EditDate.getText().toString();
					SEditTelephone = EditTelephone.getText().toString();
					SEditName = EditName.getText().toString();
					//String SEditMaster = SpinnerMaster.getSelectedItem().toString();
				//	String SEditTime = SpinnerTime.getSelectedItem().toString();
					
					SQLiteDatabase db = dbHelper.getWritableDatabase();
		    
					
					//додаємо
					if(true)
					{				
						Log.d(LOG_TAG, "--- Insert in mytable: ---");
			    		// подготовим данные для вставки в виде пар: наименование столбца - значение
						
						cv.put("Ename", SEditName);
			    		cv.put("IntentView", IntentView);
			    	
			    		//cv.put("date", SEditDate );
			    		//cv.put("master", SEditMaster);
			    		//cv.put("time", SEditTime);
			    		//cv.put("stringView", stringView);
			    		//cv.put("view", IntentView);
			    		// вставляем запись и получаем ее ID
			    		long rowID = db.insert("mytable", null, cv);
			    		Log.d(LOG_TAG, "row inserted, ID = " + rowID);
					}
		    
					/*
					///виведення
				 	if(false)
				 	{
				 		Log.d(LOG_TAG, "--- Rows in mytable: ---");
				 		// делаем запрос всех данных из таблицы mytable, получаем Cursor 
				 		Cursor c = db.query("mytable", null, null, null, null, null, null);

				 		// ставим позицию курсора на первую строку выборки
				 		// если в выборке нет строк, вернется false
				 		if (c.moveToFirst())
				 		{
				 			// определяем номера столбцов по имени в выборке
				 			int idColIndex = c.getColumnIndex("id");
				 			int intentViewColIndex = c.getColumnIndex("IntentView");
				 			int nameColIndex = c.getColumnIndex("name");
				 			//int dateColIndex = c.getColumnIndex("date");
				 			//int masterColIndex = c.getColumnIndex("master");
				 			//int timeColIndex = c.getColumnIndex("time");
				 			//int stringViewColIndex = c.getColumnIndex("stringView");
				 		    //int viewColIndex = c.getColumnIndex("view");
				 			do {
				 					// получаем значения по номерам столбцов и пишем все в лог
				 					Log.d(LOG_TAG,
				 							"ID = " + c.getInt(idColIndex) +  
				 							", name = " + c.getString(nameColIndex) +
				 							", IntentView = " + c.getString(intentViewColIndex));
				 					// переход на следующую строку 
				 					// а если следующей нет (текущая - последняя), то false - выходим из цикла
				 				} while (c.moveToNext());
				 		} else
				 			Log.d(LOG_TAG, "0 rows");
				 			c.close();
		   	      
				 	}//if
				 	
				 	
				 	
				 	 // видалення
				 	if(false)
				 	{
		  	    	  Log.d(LOG_TAG, "--- Clear mytable: ---");
		  	          // удаляем все записи
		  	          int clearCount = db.delete("mytable", null, null);
		  	          Log.d(LOG_TAG, "deleted rows count = " + clearCount);
				 	}
				 	*/
				 	
				 	
				 	 dbHelper.close();  	
				}
			});
			   
			   
			   
			   
			   
			   
			  }//oncreate
			
			


		}



		class DBHelper extends SQLiteOpenHelper {

		    private static final String LOG_TAG = null;

			public DBHelper(Context context) {
		      // конструктор суперкласса
		      super(context, "myDB", null, 1);
		    }

		    @Override
		    public void onCreate(SQLiteDatabase db) {
		      Log.d(LOG_TAG, "--- onCreate database ---");
		      // создаем таблицу с полями
		      db.execSQL("create table mytable ("
		          + "id integer primary key autoincrement," 
		          + "Ename text,"
		          + "IntentView text" + ");");
		    }

		    @Override
		    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

		    }
		    
		    
		    
		  }

		    
		    

С Лога мне кажется что там сообщается что нет данной колонки в бд, но возможно это только мне кажется потому что я новичок в этой теме.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Ошибка записи SQL

Сообщение Foenix » 31 мар 2014, 19:03

так и есть - отсутствует колонка Ename.
скрины такого размера размещать на форуме не нужно. Достаточно выделить строчки в логе, скопировать и вставить тут в редакторе.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

tolyan
Сообщения: 10
Зарегистрирован: 15 фев 2014, 00:38

Re: Ошибка записи SQL

Сообщение tolyan » 31 мар 2014, 22:10

Извините.
Вот кусок кода,здесь эта колонка Ename

class DBHelper extends SQLiteOpenHelper {

private static final String LOG_TAG = null;

public DBHelper(Context context) {
// конструктор суперкласса
super(context, "myDB", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
Log.d(LOG_TAG, "--- onCreate database ---");
// создаем таблицу с полями
db.execSQL("create table mytable ("
+ "id integer primary key autoincrement,"
+ "Ename text,"
+ "IntentView text" + ");");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}



}

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Ошибка записи SQL

Сообщение Foenix » 31 мар 2014, 23:11

Как ни странно это звучит, наличие такого кода в onCreate еще не значит, что в таблице данные поля имеются.
Вы код этого метода меняли вот тут

Код: Выделить всё

db.execSQL("create table mytable (" 
 + "id integer primary key autoincrement," 
 + "Ename text," 
 + "IntentView text" + ");"); 
 }
?
Так вот этого мало, чтоб в таблице хоть что-то изменилось.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: Ошибка записи SQL

Сообщение парень » 30 апр 2014, 21:33

Инна верно говорит, как всегда.

Скорее всего база уже создана была без Ename. Можно удалить базу и запустить приложение. либо переименовать название базы данных myDB на myDB2. (я по первости наплодил больше 100 разных баз :) )
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Ошибка записи SQL

Сообщение KamiSempai » 01 май 2014, 21:26

В таких случаях помогает удаление приложения и установка заново.
У меня это достаточно частая ошибка при разработке базы данных.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Ответить