Как правило, вы хотели бы преобразовать этот массив обратно в int в более поздней точке, вот методы для преобразования массива int в массив байтов и наоборот:
public static byte[] convertToByteArray(final int[] pIntArray)
{
final byte[] array = new byte[pIntArray.length * 4];
for (int j = 0; j < pIntArray.length; j++)
{
final int c = pIntArray[j];
array[j * 4] = (byte)((c & 0xFF000000) >> 24);
array[j * 4 + 1] = (byte)((c & 0xFF0000) >> 16);
array[j * 4 + 2] = (byte)((c & 0xFF00) >> 8);
array[j * 4 + 3] = (byte)(c & 0xFF);
}
return array;
}
public static int[] convertToIntArray(final byte[] pByteArray)
{
final int[] array = new int[pByteArray.length / 4];
for (int i = 0; i < array.length; i++)
array[i] = (((int)(pByteArray[i * 4]) << 24) & 0xFF000000) |
(((int)(pByteArray[i * 4 + 1]) << 16) & 0xFF0000) |
(((int)(pByteArray[i * 4 + 2]) << 8) & 0xFF00) |
((int)(pByteArray[i * 4 + 3]) & 0xFF);
return array;
}
Обратите внимание, что из-за распространения знака и т. Д. При преобразовании обратно в int
необходимы «& amp; 0xFF ...», Используйте getGeneratedKeys()
, если Ваш драйвер JDBC поддерживает его. Вы не хотите небрежно обращаться с попыткой получить ключ сами после вставки. Если бы Ваш драйвер не поддерживает getGeneratedKeys()
затем, я получил бы следующее значение от ключа перед вставкой.
Любой подход выполняет тот же точный SQL-оператор, но java.sql.Statement.getGeneratedKeys()
является более портативным к различным базовым базам данных.
Использование любого sqlite3_last_insert_rowid()
C API-функция или last_insert_rowid()
Функция SQL является корректным способом получить rowid, сгенерированный во время последней вставки.
SQLite поддерживает синтаксис скалярной функции SQL как:
SELECT function-name();
Поэтому, если у Вас нет доступа к API C непосредственно, можно вызвать скалярную функцию last_insert_rowid()
через a SELECT
оператор.
Если Вы смотрите на исходный код для реализации SQLiteJDBC (это, что Вы используете?) Вы будете видеть, что это точно что, автора которого обертка JDBC сделала:
ResultSet getGeneratedKeys() throws SQLException {
if (getGeneratedKeys == null) getGeneratedKeys = conn.prepareStatement(
"select last_insert_rowid();");
return getGeneratedKeys.executeQuery();
}