示例#1
0
    @Override
    public void onCreate(SQLiteDatabase db) {
      db.beginTransaction();
      try {
        SQLiteStatement stmt;
        db.execSQL("create table capitals (prefecture text primary key, capital text not null);");
        stmt = db.compileStatement("insert into capitals values (?, ?);");

        for (String[] capital : CAPITALS) {
          stmt.bindString(1, capital[0]);
          stmt.bindString(2, capital[1]);
          stmt.executeInsert();
        }

        db.execSQL(
            "create table local_dishes (prefecture text not null, local_dish text not null);");
        stmt = db.compileStatement("insert into local_dishes values (?, ?);");

        for (String[] localDish : LOCAL_DISHES) {
          stmt.bindString(1, localDish[0]);
          stmt.bindString(2, localDish[1]);
          stmt.executeInsert();
        }
        db.setTransactionSuccessful();
      } finally {
        db.endTransaction();
      }
    }
 private boolean insertWithTags(JobHolder jobHolder) {
   final SQLiteStatement stmt = sqlHelper.getInsertStatement();
   final SQLiteStatement tagsStmt = sqlHelper.getInsertTagsStatement();
   db.beginTransaction();
   try {
     stmt.clearBindings();
     bindValues(stmt, jobHolder);
     boolean insertResult = stmt.executeInsert() != -1;
     if (!insertResult) {
       return false;
     }
     for (String tag : jobHolder.getTags()) {
       tagsStmt.clearBindings();
       bindTag(tagsStmt, jobHolder.getId(), tag);
       tagsStmt.executeInsert();
     }
     db.setTransactionSuccessful();
     return true;
   } catch (Throwable t) {
     JqLog.e(t, "error while inserting job with tags");
     return false;
   } finally {
     db.endTransaction();
   }
 }
  /**
   * 批量增加产品组合主表记录数据
   *
   * @param list
   */
  public boolean batchAddProductGroupHead(List<ProductGroupHeadData> list) {
    boolean flag = false;
    String headSql =
        "insert into ProductGroupHead(PG1_ID,PG1_M02_ID,PG1_CU1_ID,PG1_CODE,PG1_Name,PG1_CreateUser,PG1_CreateTime,PG1_ModifyUser,PG1_ModifyTime,PG1_RowVersion)"
            + "values(?,?,?,?,?,?,?,?,?,?)";
    String detailSql =
        "insert into ProductGroupDetail(PG2_ID,PG2_M02_ID,PG2_PG1_ID,PG2_PD1_ID,PG2_GroupQty,PG2_CreateUser,PG2_CreateTime,PG2_ModifyUser,PG2_ModifyTime,PG2_RowVersion)"
            + "values(?,?,?,?,?,?,?,?,?,?)";
    SQLiteDatabase db = AssetsDatabaseManager.getManager().getDatabase();
    try {
      // 开启事务
      db.beginTransaction();
      for (ProductGroupHeadData productGroupHead : list) {
        SQLiteStatement stat = db.compileStatement(headSql);
        stat.bindString(1, productGroupHead.getPg1Id());
        stat.bindString(2, productGroupHead.getPg1M02Id());
        stat.bindString(3, productGroupHead.getPg1Cu1Id());
        stat.bindString(4, productGroupHead.getPg1Code());
        stat.bindString(5, productGroupHead.getPg1Name());
        stat.bindString(6, productGroupHead.getPg1CreateUser());
        stat.bindString(7, productGroupHead.getPg1CreateTime());
        stat.bindString(8, productGroupHead.getPg1ModifyUser());
        stat.bindString(9, productGroupHead.getPg1ModifyTime());
        stat.bindString(10, productGroupHead.getPg1RowVersion());
        stat.executeInsert();

        List<ProductGroupDetailData> children = productGroupHead.getChildren();
        if (children != null) {
          for (ProductGroupDetailData productGroupDetail : children) {
            SQLiteStatement detail_stat = db.compileStatement(detailSql);
            detail_stat.bindString(1, productGroupDetail.getPg2Id());
            detail_stat.bindString(2, productGroupDetail.getPg2M02Id());
            detail_stat.bindString(3, productGroupDetail.getPg2Pg1Id());
            detail_stat.bindString(4, productGroupDetail.getPg2Pd1Id());
            detail_stat.bindLong(5, productGroupDetail.getPg2GroupQty());
            detail_stat.bindString(6, productGroupDetail.getPg2CreateUser());
            detail_stat.bindString(7, productGroupDetail.getPg2CreateTime());
            detail_stat.bindString(8, productGroupDetail.getPg2ModifyUser());
            detail_stat.bindString(9, productGroupDetail.getPg2ModifyTime());
            detail_stat.bindString(10, productGroupDetail.getPg2RowVersion());
            detail_stat.executeInsert();
          }
        }
      }
      // 数据插入成功,设置事物成功标志
      db.setTransactionSuccessful();
      // 保存数据
      db.endTransaction();
      flag = true;
    } catch (SQLException e) {
      // 结束事物,在这里没有设置成功标志,结束后不保存
      ZillionLog.e(this.getClass().getName(), e.getMessage(), e);
      db.endTransaction();
      e.printStackTrace();
    }
    return flag;
  }
  protected void saveBookSeriesInfo(long bookId, SeriesInfo seriesInfo) {
    if (myGetSeriesIdStatement == null) {
      myGetSeriesIdStatement =
          myDatabase.compileStatement("SELECT series_id FROM Series WHERE name = ?");
      myInsertSeriesStatement =
          myDatabase.compileStatement("INSERT OR IGNORE INTO Series (name) VALUES (?)");
      myInsertBookSeriesStatement =
          myDatabase.compileStatement(
              "INSERT OR REPLACE INTO BookSeries (book_id,series_id,book_index) VALUES (?,?,?)");
      myDeleteBookSeriesStatement =
          myDatabase.compileStatement("DELETE FROM BookSeries WHERE book_id = ?");
    }

    if (seriesInfo == null) {
      myDeleteBookSeriesStatement.bindLong(1, bookId);
      myDeleteBookSeriesStatement.execute();
    } else {
      long seriesId;
      try {
        myGetSeriesIdStatement.bindString(1, seriesInfo.Name);
        seriesId = myGetSeriesIdStatement.simpleQueryForLong();
      } catch (SQLException e) {
        myInsertSeriesStatement.bindString(1, seriesInfo.Name);
        seriesId = myInsertSeriesStatement.executeInsert();
      }
      myInsertBookSeriesStatement.bindLong(1, bookId);
      myInsertBookSeriesStatement.bindLong(2, seriesId);
      SQLiteUtil.bindString(
          myInsertBookSeriesStatement,
          3,
          seriesInfo.Index != null ? seriesInfo.Index.toString() : null);
      myInsertBookSeriesStatement.execute();
    }
  }
 private long getTagId(Tag tag) {
   if (myGetTagIdStatement == null) {
     myGetTagIdStatement =
         myDatabase.compileStatement("SELECT tag_id FROM Tags WHERE parent_id = ? AND name = ?");
     myCreateTagIdStatement =
         myDatabase.compileStatement("INSERT OR IGNORE INTO Tags (parent_id,name) VALUES (?,?)");
   }
   {
     final Long id = myIdByTag.get(tag);
     if (id != null) {
       return id;
     }
   }
   if (tag.Parent != null) {
     myGetTagIdStatement.bindLong(1, getTagId(tag.Parent));
   } else {
     myGetTagIdStatement.bindNull(1);
   }
   myGetTagIdStatement.bindString(2, tag.Name);
   long id;
   try {
     id = myGetTagIdStatement.simpleQueryForLong();
   } catch (SQLException e) {
     if (tag.Parent != null) {
       myCreateTagIdStatement.bindLong(1, getTagId(tag.Parent));
     } else {
       myCreateTagIdStatement.bindNull(1);
     }
     myCreateTagIdStatement.bindString(2, tag.Name);
     id = myCreateTagIdStatement.executeInsert();
   }
   myIdByTag.put(tag, id);
   myTagById.put(id, tag);
   return id;
 }
  protected void saveBookAuthorInfo(long bookId, long index, Author author) {
    if (myGetAuthorIdStatement == null) {
      myGetAuthorIdStatement =
          myDatabase.compileStatement(
              "SELECT author_id FROM Authors WHERE name = ? AND sort_key = ?");
      myInsertAuthorStatement =
          myDatabase.compileStatement("INSERT OR IGNORE INTO Authors (name,sort_key) VALUES (?,?)");
      myInsertBookAuthorStatement =
          myDatabase.compileStatement(
              "INSERT OR REPLACE INTO BookAuthor (book_id,author_id,author_index) VALUES (?,?,?)");
    }

    long authorId;
    try {
      myGetAuthorIdStatement.bindString(1, author.DisplayName);
      myGetAuthorIdStatement.bindString(2, author.SortKey);
      authorId = myGetAuthorIdStatement.simpleQueryForLong();
    } catch (SQLException e) {
      myInsertAuthorStatement.bindString(1, author.DisplayName);
      myInsertAuthorStatement.bindString(2, author.SortKey);
      authorId = myInsertAuthorStatement.executeInsert();
    }
    myInsertBookAuthorStatement.bindLong(1, bookId);
    myInsertBookAuthorStatement.bindLong(2, authorId);
    myInsertBookAuthorStatement.bindLong(3, index);
    myInsertBookAuthorStatement.execute();
  }
 private void updateTables18() {
   myDatabase.execSQL("ALTER TABLE BookSeries RENAME TO BookSeries_Obsolete");
   myDatabase.execSQL(
       "CREATE TABLE BookSeries("
           + "series_id INTEGER NOT NULL REFERENCES Series(series_id),"
           + "book_id INTEGER NOT NULL UNIQUE REFERENCES Books(book_id),"
           + "book_index TEXT)");
   final SQLiteStatement insert =
       myDatabase.compileStatement(
           "INSERT INTO BookSeries (series_id,book_id,book_index) VALUES (?,?,?)");
   final Cursor cursor =
       myDatabase.rawQuery("SELECT series_id,book_id,book_index FROM BookSeries_Obsolete", null);
   while (cursor.moveToNext()) {
     insert.bindLong(1, cursor.getLong(0));
     insert.bindLong(2, cursor.getLong(1));
     final float index = cursor.getFloat(2);
     final String stringIndex;
     if (index == 0.0f) {
       stringIndex = null;
     } else {
       if (Math.abs(index - Math.round(index)) < 0.01) {
         stringIndex = String.valueOf(Math.round(index));
       } else {
         stringIndex = String.format("%.1f", index);
       }
     }
     final BigDecimal bdIndex = SeriesInfo.createIndex(stringIndex);
     SQLiteUtil.bindString(insert, 3, bdIndex != null ? bdIndex.toString() : null);
     insert.executeInsert();
   }
   cursor.close();
   myDatabase.execSQL("DROP TABLE BookSeries_Obsolete");
 }
 public long save(int id_sesion, int id_moderador) {
   // TODO Auto-generated method stub
   insertStatement.clearBindings();
   insertStatement.bindString(1, String.valueOf(id_sesion));
   insertStatement.bindString(2, String.valueOf(id_moderador));
   return insertStatement.executeInsert();
 }
  private void createVarnaStations(SQLiteDatabase db, String tableName, InputStream openRawResource)
      throws JsonParseException, JsonMappingException, IOException {
    final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

    final BusStopVarnaTraffic[] all =
        OBJECT_MAPPER.readValue(openRawResource, BusStopVarnaTraffic[].class);
    final String FORMAT_SQL_INSERT =
        "INSERT INTO %s (%s, %s, %s, %s, %s) VALUES (?, ?, ?, ?, '%s')";

    final SQLiteStatement insertStatement =
        db.compileStatement(
            String.format(
                FORMAT_SQL_INSERT,
                tableName,
                Station.CODE,
                Station.LAT,
                Station.LON,
                Station.LABEL,
                Station.PROVIDER,
                FavoritiesService.PROVIDER_VARNATRAFFIC));

    for (BusStopVarnaTraffic busStopVarnaTraffic : all) {
      insertStatement.bindLong(1, busStopVarnaTraffic.getId());
      insertStatement.bindDouble(2, busStopVarnaTraffic.getPosition().getLat());
      insertStatement.bindDouble(3, busStopVarnaTraffic.getPosition().getLon());
      insertStatement.bindString(4, busStopVarnaTraffic.getText());
      insertStatement.executeInsert();
    }
  }
 public int insert(
     String statement, Object[] args, FieldType[] argFieldTypes, GeneratedKeyHolder keyHolder)
     throws SQLException {
   SQLiteStatement stmt = null;
   try {
     stmt = db.compileStatement(statement);
     bindArgs(stmt, args, argFieldTypes);
     long rowId = stmt.executeInsert();
     if (keyHolder != null) {
       keyHolder.addKey(rowId);
     }
     /*
      * I've decided to not do the CHANGES() statement here like we do down below in UPDATE because we know that
      * it worked (since it didn't throw) so we know that 1 is right.
      */
     int result = 1;
     logger.trace(
         "{}: insert statement is compiled and executed, changed {}: {}", this, result, statement);
     return result;
   } catch (android.database.SQLException e) {
     throw SqlExceptionUtil.create("inserting to database failed: " + statement, e);
   } finally {
     closeQuietly(stmt);
   }
 }
 private void addStation(Integer code, Double lat, Double lon, String label) {
   insertStatement.bindLong(1, code);
   insertStatement.bindDouble(2, lat);
   insertStatement.bindDouble(3, lon);
   insertStatement.bindString(4, label);
   insertStatement.executeInsert();
 }
示例#12
0
 public void insertFiles(File[] files) {
   SQLiteDatabase database = dbHelper.getWritableDatabase();
   SQLiteStatement statement =
       database.compileStatement(
           "INSERT INTO "
               + TABLE_NAME
               + " ("
               + COL_FILENAME
               + ", "
               + COL_FILESIZE
               + ", "
               + COL_TIMESTAMP
               + ") VALUES (?, ?, ?)");
   database.beginTransaction();
   try {
     for (File file : files) {
       statement.bindString(1, file.getName());
       statement.bindLong(2, file.length());
       statement.bindLong(3, file.lastModified());
       statement.executeInsert();
     }
     database.setTransactionSuccessful();
   } finally {
     database.endTransaction();
   }
 }
 private void insertNormalizedNameLookup(
     SQLiteStatement stmt, long rawContactId, long dataId, int lookupType, String normalizedName) {
   stmt.bindLong(1, rawContactId);
   stmt.bindLong(2, dataId);
   stmt.bindLong(3, lookupType);
   stmt.bindString(4, normalizedName);
   stmt.executeInsert();
 }
 @Override
 protected long insertBookInfo(ZLFile file, String encoding, String language, String title) {
   if (myInsertBookInfoStatement == null) {
     myInsertBookInfoStatement =
         myDatabase.compileStatement(
             "INSERT OR IGNORE INTO Books (encoding,language,title,file_id) VALUES (?,?,?,?)");
   }
   SQLiteUtil.bindString(myInsertBookInfoStatement, 1, encoding);
   SQLiteUtil.bindString(myInsertBookInfoStatement, 2, language);
   myInsertBookInfoStatement.bindString(3, title);
   final FileInfoSet infoSet = new FileInfoSet(file);
   myInsertBookInfoStatement.bindLong(4, infoSet.getId(file));
   return myInsertBookInfoStatement.executeInsert();
 }
 /** {@inheritDoc} */
 @Override
 public boolean insert(@NonNull JobHolder jobHolder) {
   persistJobToDisk(jobHolder);
   if (jobHolder.hasTags()) {
     return insertWithTags(jobHolder);
   }
   final SQLiteStatement stmt = sqlHelper.getInsertStatement();
   stmt.clearBindings();
   bindValues(stmt, jobHolder);
   long insertId = stmt.executeInsert();
   // insert id is a alias to row_id
   jobHolder.setInsertionOrder(insertId);
   return insertId != -1;
 }
 /** {@inheritDoc} */
 @Override
 public boolean insertOrReplace(@NonNull JobHolder jobHolder) {
   if (jobHolder.getInsertionOrder() == null) {
     return insert(jobHolder);
   }
   persistJobToDisk(jobHolder);
   jobHolder.setRunningSessionId(JobManager.NOT_RUNNING_SESSION_ID);
   SQLiteStatement stmt = sqlHelper.getInsertOrReplaceStatement();
   stmt.clearBindings();
   bindValues(stmt, jobHolder);
   boolean result = stmt.executeInsert() != -1;
   JqLog.d("reinsert job result %s", result);
   return result;
 }
  private long insert(SQLiteStatement insertStatement) {
    long rowId = insertStatement.executeInsert();
    if (rowId == 0) {
      throw new RuntimeException("Insert failed");
    }

    mBatchCounter++;
    if (mBatchCounter >= INSERT_BATCH_SIZE) {
      mTargetDb.setTransactionSuccessful();
      mTargetDb.endTransaction();
      mTargetDb.beginTransaction();
      mBatchCounter = 0;
    }
    return rowId;
  }
 public long save(InstalledRecord entity) {
   insertStatement.clearBindings();
   // nov21
   // Log.i("installedread","save installed");
   insertStatement.bindString(1, entity.getPkgName());
   insertStatement.bindString(2, entity.getAppName());
   insertStatement.bindString(3, entity.getDate());
   insertStatement.bindLong(4, entity.getMiliSeconds());
   insertStatement.bindString(5, String.valueOf(entity.getLogitude()));
   insertStatement.bindString(6, String.valueOf(entity.getLatitude()));
   // insertStatement.bindDouble(5, entity.getLogitude());
   // insertStatement.bindDouble(6, entity.getLatitude());
   insertStatement.bindLong(7, entity.getNumber());
   return insertStatement.executeInsert();
 }
示例#19
0
  private boolean insertCity(
      long id, @NonNull String name, @NonNull String country, double latitude, double longitude) {
    insertStatement.bindLong(1, id);
    insertStatement.bindString(2, name);
    insertStatement.bindString(3, country);
    insertStatement.bindDouble(4, latitude);
    insertStatement.bindDouble(5, longitude);

    long rowId = insertStatement.executeInsert();
    if (rowId < 0) {
      Log.w(LOG_TAG, "Failed to insert city: id=" + id + " name=" + name);
      return false;
    }
    return true;
  }
示例#20
0
 /**
  * 插入一条记录,返回该记录的rowId Author: hyl Time: 2015-8-17上午11:55:55
  *
  * @param sql
  * @param args
  * @return 插入失败返回-1,成功返回rowId
  */
 public long insert(String sql, Object[] args) {
   long rowId = -1;
   SQLiteStatement statement = this.mSQLiteDataBase.compileStatement(sql);
   try {
     if (args != null) {
       for (int i = 0; i < args.length; i++) {
         bindArgs(statement, i + 1, args[i]);
       }
     }
     rowId = statement.executeInsert();
     DBLog.debug(sql, args);
   } finally {
     statement.close();
   }
   return rowId;
 }
示例#21
0
  // CUD local
  public Boolean salvar(Banco b, byte[] fotoPersonal) {
    /*String SQL = "INSERT INTO Personal (telefonePersonal,nomePersonal,dataDeNascimentoPersonal," +
    "emailPersonal,sexoPersonal,senhaPersonal,usuarioPersonal,fotoPersonal) " +
    "VALUES('" + super.getTelefone() + "','"+ super.getNome() + "','" + super.getDataDeNascimento() +
    "','" + super.getEmail() + "','" + super.getSexo() + "','"  +
    super.getSenha() + "','" 	+ super.getUsuario() + "', '" + super.getFoto() + "')";
    */

    String SQL =
        "INSERT INTO Personal ("
            + "telefonePersonal,"
            + "nomePersonal,"
            + "dataDeNascimentoPersonal,"
            + "emailPersonal,"
            + "sexoPersonal,"
            + "senhaPersonal,"
            + "usuarioPersonal,"
            + "fotoPersonal,"
            + "ativo) values "
            + "(?, ?, ?, ? , ?, ? ,? ,? ,?)";

    SQLiteStatement statement = b.getWritableDatabase().compileStatement(SQL);
    statement.bindString(1, super.getTelefone());
    statement.bindString(2, super.getNome());
    statement.bindString(3, super.getDataDeNascimento());
    statement.bindString(4, super.getEmail());
    statement.bindString(5, super.getSexo());
    statement.bindString(6, super.getSenha());
    statement.bindString(7, super.getUsuario());
    statement.bindBlob(8, fotoPersonal);
    statement.bindString(9, "ativado");

    /*String SQL = "INSERT INTO Personal (telefonePersonal,nomePersonal,dataDeNascimentoPersonal," +
                      "emailPersonal,sexoPersonal,senhaPersonal,usuarioPersonal,fotoPersonal,ativo) " +
                      "VALUES('" + super.getTelefone()+ "','"+ super.getNome() + "','" + super.getDataDeNascimento() +
                      "','" + super.getEmail() + "','" + super.getSexo() + "','"  +
                      super.getSenha() + "','" 	+ super.getUsuario() + "','"+ foto + "','ativado');";
    //  System.out.println(SQL);*/
    try {
      statement.executeInsert();
      return true;
    } catch (Exception ex) {
      // System.out.println(ex.toString());
      ex.printStackTrace();
      return false;
    }
  }
 public long insertHistory(
     String meid_dec, String meid_hex, String esn_dec, String esn_hex, String metropcs_spc) {
   SQLiteStatement statement =
       this.db.compileStatement(
           "INSERT INTO history (created_at,meid_dec,meid_hex,esn_dec,esn_hex,metropcs_spc) VALUES(date('now'),'"
               + meid_dec
               + "','"
               + meid_hex
               + "','"
               + esn_dec
               + "','"
               + esn_hex
               + "','"
               + metropcs_spc
               + "');");
   return statement.executeInsert();
 }
示例#23
0
  /**
   * Adds the given API call to the queue.
   *
   * @param apiCall The call to add to the queue.
   */
  public boolean addToQueue(AbstractAnalyticsApiCall apiCall) {
    SQLiteDatabase db = getWritableDatabase();
    if (insert == null) {
      insert =
          db.compileStatement(
              "INSERT INTO " + TABLE_QUEUE + " (write_key, endpoint, payload) VALUES (?, ?, ?)");
    }

    // Params are 1 indexed, not 0
    insert.bindString(1, apiCall.getWriteKey());
    insert.bindString(2, apiCall.getApiEndpoint());
    insert.bindString(3, apiCall.getPayload());

    boolean success = insert.executeInsert() == 1;

    return success;
  }
  private void insertValues(SQLiteDatabase db, String query) {
    Cursor c = null;
    try {
      c = db.rawQuery(query, null);
      if (c == null) return;
      if (c.isBeforeFirst() && !c.moveToFirst()) return;

      while (true) {
        insert.bindLong(1, c.getInt(0)); // id
        insert.bindString(2, c.getString(1)); // title
        insert.bindLong(3, c.getInt(2)); // unread
        insert.executeInsert();
        if (!c.moveToNext()) break;
      }
    } finally {
      if (c != null && !c.isClosed()) c.close();
    }
  }
 /**
  * 增加产品组合主表记录 单条
  *
  * @param productGroupHead
  * @return
  */
 public boolean addProductGroupHead(ProductGroupHeadData productGroupHead) {
   String insertSql =
       "insert into ProductGroupHead(PG1_ID,PG1_M02_ID,PG1_CU1_ID,PG1_CODE,PG1_Name,PG1_CreateUser,PG1_CreateTime,PG1_ModifyUser,PG1_ModifyTime,PG1_RowVersion)"
           + "values(?,?,?,?,?,?,?,?,?,?)";
   SQLiteDatabase db = AssetsDatabaseManager.getManager().getDatabase();
   SQLiteStatement stat = db.compileStatement(insertSql);
   stat.bindString(1, productGroupHead.getPg1Id());
   stat.bindString(2, productGroupHead.getPg1M02Id());
   stat.bindString(3, productGroupHead.getPg1Cu1Id());
   stat.bindString(4, productGroupHead.getPg1Code());
   stat.bindString(5, productGroupHead.getPg1Name());
   stat.bindString(6, productGroupHead.getPg1CreateUser());
   stat.bindString(7, productGroupHead.getPg1CreateTime());
   stat.bindString(8, productGroupHead.getPg1ModifyUser());
   stat.bindString(9, productGroupHead.getPg1ModifyTime());
   stat.bindString(10, productGroupHead.getPg1RowVersion());
   long i = stat.executeInsert();
   return i > 0;
 }
  public void setEstoque(VO_Materiais materiais) {
    try {
      String queryString = Contrato_VendasFacil.Materiais.UPDATE_ESTOQUE;

      // todo: getWritableDatabase
      DAO_VendasFacil dao = new DAO_VendasFacil(fragmento);
      SQLiteDatabase db = dao.getTabelaGravacao();

      SQLiteStatement query = db.compileStatement(queryString);

      query.bindDouble(1, materiais.getQtdEstoque());
      query.bindLong(2, materiais.getDataUltimaCompraAsLong());
      query.bindLong(3, materiais.getCodMaterialInteger());

      query.executeInsert();
      db.close();
      // todo: close()
    } catch (Exception e) {
      Toasts.mensagemErro(fragmento, e.getMessage(), "DAO_Material.setEstoque");
    }
  }
  @Override
  protected long saveBookmark(Bookmark bookmark) {
    SQLiteStatement statement;
    if (bookmark.getId() == -1) {
      if (myInsertBookmarkStatement == null) {
        myInsertBookmarkStatement =
            myDatabase.compileStatement(
                "INSERT OR IGNORE INTO Bookmarks (book_id,bookmark_text,creation_time,modification_time,access_time,access_counter,model_id,paragraph,word,char,visible) VALUES (?,?,?,?,?,?,?,?,?,?,?)");
      }
      statement = myInsertBookmarkStatement;
    } else {
      if (myUpdateBookmarkStatement == null) {
        myUpdateBookmarkStatement =
            myDatabase.compileStatement(
                "UPDATE Bookmarks SET book_id = ?, bookmark_text = ?, creation_time =?, modification_time = ?,access_time = ?, access_counter = ?, model_id = ?, paragraph = ?, word = ?, char = ?, visible = ? WHERE bookmark_id = ?");
      }
      statement = myUpdateBookmarkStatement;
    }

    statement.bindLong(1, bookmark.getBookId());
    statement.bindString(2, bookmark.getText());
    SQLiteUtil.bindDate(statement, 3, bookmark.getTime(Bookmark.CREATION));
    SQLiteUtil.bindDate(statement, 4, bookmark.getTime(Bookmark.MODIFICATION));
    SQLiteUtil.bindDate(statement, 5, bookmark.getTime(Bookmark.ACCESS));
    statement.bindLong(6, bookmark.getAccessCount());
    SQLiteUtil.bindString(statement, 7, bookmark.ModelId);
    statement.bindLong(8, bookmark.ParagraphIndex);
    statement.bindLong(9, bookmark.ElementIndex);
    statement.bindLong(10, bookmark.CharIndex);
    statement.bindLong(11, bookmark.IsVisible ? 1 : 0);

    if (statement == myInsertBookmarkStatement) {
      return statement.executeInsert();
    } else {
      final long id = bookmark.getId();
      statement.bindLong(12, id);
      statement.execute();
      return id;
    }
  }
  public void setMateriais(VO_Materiais materiais, int operacao) {
    try {
      String queryString = null;

      switch (operacao) {
        case INSERE:
          queryString = Contrato_VendasFacil.Materiais.INSERT;
          break;

        case ATUALIZA:
          queryString = Contrato_VendasFacil.Materiais.UPDATE;
          break;
      }

      if (materiais.getCodMaterialString().isEmpty()) {
        materiais.setCodMaterial(proximoCodigoMaterial());
      }
      // todo: getWritableDatabase
      DAO_VendasFacil dao = new DAO_VendasFacil(fragmento);
      SQLiteDatabase db = dao.getTabelaGravacao();

      SQLiteStatement query = db.compileStatement(queryString);

      // Ambas as querys (insert e update) estão montadas com os campos na mesma sequencia
      // Assim é possível utilizar o mesmo trecho de código abaixo para ambos os casos.
      query.bindString(1, materiais.getDesMaterial());
      query.bindBlob(2, materiais.getFotoByteArray());
      query.bindDouble(3, materiais.getQtdMinima());
      query.bindDouble(4, materiais.getQtdEstoque());
      query.bindLong(5, materiais.getCodUnidadeMedida());
      query.bindLong(6, materiais.getDataUltimaCompraAsLong());
      query.bindLong(7, materiais.getCodMaterialInteger());

      query.executeInsert();
      db.close();
      // todo: close()
    } catch (Exception e) {
      Toasts.mensagemErro(fragmento, e.getMessage(), "DAO_Material.setMateriais");
    }
  }
 /**
  * Perform an internal string-to-integer lookup using the compiled {@link SQLiteStatement}
  * provided. If a mapping isn't found in database, it will be created. All new, uncached answers
  * are added to the cache automatically.
  *
  * @param query Compiled statement used to query for the mapping.
  * @param insert Compiled statement used to insert a new mapping when no existing one is found in
  *     cache or from query.
  * @param value Value to find mapping for.
  * @param cache In-memory cache of previous answers.
  * @return An unique integer mapping for the given value.
  */
 private long lookupAndCacheId(
     SQLiteStatement query, SQLiteStatement insert, String value, HashMap<String, Long> cache) {
   long id = -1;
   try {
     // Try searching database for mapping
     DatabaseUtils.bindObjectToProgram(query, 1, value);
     id = query.simpleQueryForLong();
   } catch (SQLiteDoneException e) {
     // Nothing found, so try inserting new mapping
     DatabaseUtils.bindObjectToProgram(insert, 1, value);
     id = insert.executeInsert();
   }
   if (id != -1) {
     // Cache and return the new answer
     cache.put(value, id);
     return id;
   } else {
     // Otherwise throw if no mapping found or created
     throw new IllegalStateException(
         "Couldn't find or create internal " + "lookup table entry for value " + value);
   }
 }
 protected void saveFileInfo(FileInfo fileInfo) {
   final long id = fileInfo.Id;
   SQLiteStatement statement;
   if (id == -1) {
     if (myInsertFileInfoStatement == null) {
       myInsertFileInfoStatement =
           myDatabase.compileStatement(
               "INSERT OR IGNORE INTO Files (name,parent_id,size) VALUES (?,?,?)");
     }
     statement = myInsertFileInfoStatement;
   } else {
     if (myUpdateFileInfoStatement == null) {
       myUpdateFileInfoStatement =
           myDatabase.compileStatement(
               "UPDATE Files SET name = ?, parent_id = ?, size = ? WHERE file_id = ?");
     }
     statement = myUpdateFileInfoStatement;
   }
   statement.bindString(1, fileInfo.Name);
   final FileInfo parent = fileInfo.Parent;
   if (parent != null) {
     statement.bindLong(2, parent.Id);
   } else {
     statement.bindNull(2);
   }
   final long size = fileInfo.FileSize;
   if (size != -1) {
     statement.bindLong(3, size);
   } else {
     statement.bindNull(3);
   }
   if (id == -1) {
     fileInfo.Id = statement.executeInsert();
   } else {
     statement.bindLong(4, id);
     statement.execute();
   }
 }