Я пытаюсь вставить значения в базу данных Android SQLite.Вопрос в том, что я пытаюсь вставить слово, в таблице 3 столбца: ID, WORD, COUNT.
Когда я вставляю слово в базу данных, какой-то метод проверяет, существует ли это слово вбаза данных.Если да, это увеличит значение COUNT для этого слова.
Пример.У меня есть слово «Вопрос» в базе данных со значением COUNT 1, и я хочу вставить его снова, метод найдет это слово, и если я хочу вставить «qUeSTion», это не имеет значения, он вернет «Вопрос» для менякогда я получу данные, и это увеличит значение COUNT с 1 до 2. Понял ??
ТАК вот мой код.У меня проблемы, когда пытаюсь сделать это, это проверка.Я не знаю, какой метод использовать и т. Д. Я использую SQLiteStatement для вставки.Но методы, которые предлагает, не работают.Любая идея, что использовать?
Спасибо.
Класс DataHelper
public class DataHelper {
private static final String DATABASE_NAME = "sms.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "words";
private Context context;
private SQLiteDatabase db;
private SQLiteStatement insertStmt;
private static final String INSERT = "insert into "
+ TABLE_NAME + "(word) values (?)";
public DataHelper(Context context) {
this.context = context;
OpenHelper openHelper = new OpenHelper(this.context);
this.db = openHelper.getWritableDatabase();
this.insertStmt = this.db.compileStatement(INSERT);
}
public long insert(String word) {
this.insertStmt.bindString(1, word);
return this.insertStmt.executeInsert();
}
public List<String> selectAll() {
List<String> list = new ArrayList<String>();
Cursor cursor = this.db.query(TABLE_NAME, new String[] { "word"},
null, null, null, null, "id desc");
if (cursor.moveToFirst()) {
do {
list.add(cursor.getString(0));
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
return list;
}
}
Класс SMS Этокласс, где я получаю слова и вставляю в базу данных
public class SMS extends Activity {
private DataHelper dh;
private static TextView txtView;
final Uri CONTENT_URI = Uri.parse("content://sms/sent");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.dh = new DataHelper(this);
txtView = (TextView)findViewById(R.id.txtView);
Cursor cursor = getContentResolver().query(CONTENT_URI, null, null, null, null);
String body;
if(cursor.moveToFirst()){
body = cursor.getString(cursor.getColumnIndexOrThrow("body")).toString();
if(body == ""){
Toast.makeText(getBaseContext(), "There is no words to save!", Toast.LENGTH_LONG).show();
}
else{
StringTokenizer st = new StringTokenizer(body);
while(st.hasMoreTokens()){
this.dh.insert(st.nextToken());
Toast.makeText(getBaseContext(), "The set of words has been updated!", Toast.LENGTH_LONG).show();
}
List<String> words = this.dh.selectAll();
StringBuilder sb = new StringBuilder();
sb.append("Set of words:\n\n");
for (String w : words) {
sb.append(w + " ");
}
Log.d("EXAMPLE", "words size - " + words.size());
txtView.setText(sb.toString());
}
}
}
}