, если таблица пуста, и вы заполняете ее всего за один снимок (и вам не нужно делать это позже, когда в таблице есть данные), И у вас не слишком много строк, тогда вы можете просто кешировать имена, которые вы уже вставили, и посмотреть их в памяти.
Это скорее комментарий, я думаю.
есть и это для получения последнего вставленного идентификатора:
SELECT last_insert_rowid();
Но если вышеупомянутое применимо, вы даже быстрее, назначив идентификаторы самостоятельно, а не определяете его как AUTOINCREMENT.Тогда вам не нужно получать последний вставленный идентификатор, вы просто сохраняете счетчик и все вставленные имена и увеличиваете их для каждого найденного вами нового имени.
CREATE TABLE IF NOT EXISTS signals(sigid INTEGER PRIMARY KEY NOT NULL, name TEXT)
List<String> insertedNames = new List<String>();
int count = 0;
while(input.hasNext())
{
String name = input.next();
if( !insertedNames.contains(name) )
{
var sql = "insert into table (sigid,name) VALUES (" + count + ", " + name + ")";
executeSql(sql);
insertedNames.add(name);
count++;
}
}
отвечая на ваш комментарий
public int getId( string name )
{
String sql = "select id from table where name='" + name + "'";
int theIdForTheName = executeAndGetFirstColumnAsInt(sql);
return theIdForTheName;
}
я не знаю, что еще вам сказать ...