После исправления мой метод работал, но не все. Никакая ошибка нету. Вот мой код:
DBHelper(Context context) {
super(context, "Samo.db", null, 1);
SQLiteDatabase db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists incomes(id integer primary key autoincrement, name integer, price real," +
"quantity integer, provider integer, waybill integer, date text) ");
db.execSQL("create table if not exists outgoe(id integer primary key autoincrement, name integer, " +
"quantity integer, recipient integer, date text)");
db.execSQL("create table if not exists goods(id integer primary key autoincrement, name text, unit integer)");
db.execSQL("create table if not exists exist(id integer primary key autoincrement, name integer, quantity)");
db.execSQL("create table if not exists providers(id integer primary key autoincrement, name text)");
db.execSQL("create table if not exists units(id integer primary key autoincrement, unit text)");
db.execSQL("create table if not exists recipients(id integer primary key autoincrement, name text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onCreate(db);
}
void insertToIncomes(String name, String price, String unit, String quantity, String provider, String waybill, String date) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
ContentValues cv2 = new ContentValues();
ContentValues cv3 = new ContentValues();
Cursor cursor = db.rawQuery("select id from goods where name like '" + name + "'", null);
if (cursor != null && cursor.moveToFirst())
cv.put("name", cursor.getInt(0));
else {
cv2.put("name", name);
cursor = db.rawQuery("select id from units where unit like '" + unit + "'", null);
if (cursor != null && cursor.moveToFirst())
cv2.put("unit", cursor.getInt(0));
else {
cv3.put("unit", unit);
db.insert("units", null, cv3);
cursor = db.rawQuery("select count(*) from units ", null);
cv2.put("unit", cursor.getCount());
}
db.insert("goods", null, cv2);
cursor = db.rawQuery("select count(*) from goods ", null);
cv.put("name", cursor.getCount());
cv2.clear();
cv3.clear();
}
cv.put(price, Double.parseDouble(price));
cv.put("quantity", Integer.parseInt(quantity));
cursor = db.rawQuery("select id from providers where name like '" + provider + "'", null);
if (cursor != null && cursor.moveToFirst())
cv.put("provider", cursor.getInt(0));
else {
cv2.put("name", name);
db.insert("provider", null, cv2);
cursor = db.rawQuery("select count(*) from providers", null);
if (cursor != null && cursor.moveToFirst())
cv.put("provider", cursor.getCount());
}
cv.put("waybill", waybill);
cv.put("date", date);
db.insert("incomes", null, cv);
cursor.close();
}
Он добавляет строки только в goods и units. Проверил через SQLite Manager
Он добавляет строки только в goods и units.
Естественно. У Вас таблица называется providers
, а Вы добавляете запись в таблицу provider
, которой не существует.
Попробуйте так:
db.insert("providers", null, cv2);
Никакая ошибка нету
В случае ошибки метод insert
возвращает значение -1
. Поэтому имеет смысл проверять значение, которое метод возвращает после операции. Например, так:
if (db.insert("providers", null, cv2) == -1){
// Здесь обрабатываем ошибку.
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Мне приходит файл с исходным кодом Java класса, например:
Tomcat-6 крутится на windows server 2016, на нем развернуто веб-приложение, для логирования использован Log4j 12
Всем приветСтолкнулся с новой проблемой, которую не могу решить