- Home /
SQLite: updating integer with the value 1 to integer = integer + 1 results in 3 instead of 2
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "item")
{
IDbConnection dbcon = new SqliteConnection(connection);
dbcon.Open();
IDbCommand cmnd1 = dbcon.CreateCommand();
cmnd1.CommandText = "UPDATE inventory SET amount = amount + '"+collision.gameObject.GetComponent<item_info>().total+"' WHERE NAME = '"+collision.gameObject.GetComponent<item_info>().itemName+"'";
int success = cmnd1.ExecuteNonQuery();
Debug.Log(cmnd1.CommandText);
Debug.Log("returns " +cmnd1.ExecuteNonQuery());
if(success == 0)
{
IDbCommand cmnd = dbcon.CreateCommand();
cmnd.CommandText = "INSERT INTO inventory (name, player, world, inventory, positionx, positiony, positionz, amount, hotslot, slot) VALUES ('"+collision.gameObject.GetComponent<item_info>().itemName+"', 'false', 'false', 'true', '0.0', '0.0', '0.0', '"+collision.gameObject.GetComponent<item_info>().total+"', '-1', '-1')";
cmnd.ExecuteNonQuery();
Debug.Log(cmnd.CommandText);
}
dbcon.Close();
Destroy(collision.gameObject);
}
}
This is suppose to create a new row whenever colliding with a gameObject with the tag item
and update the row in case it already exists, the latter does not work correctly.
Expected result: Have amount
increased by whatever collision.gameObject.GetComponent<item_info>().total
is. So if the value of amount
is 1 and the value of collision.gameObject.GetComponent<item_info>().total
is 1 it should now become 2, instead it becomes 3
I don't get it, OnCollisionEnter2D isn't being called twice nor are the database queries. What am I missing here? @_@
Answer by Bunny83 · Jan 18, 2019 at 02:30 AM
You execute your query two times:
// here
int success = cmnd1.ExecuteNonQuery();
// and here
Debug.Log("returns " +cmnd1.ExecuteNonQuery());
Your answer
Follow this Question
Related Questions
SQLite Except: The database file is locked 1 Answer
Database (SQLite) Setup for Unity 0 Answers
SQLite Database is not working after standalone build 1 Answer
Sq lite Date base in unity 3d? 1 Answer
Sqlite in Unity 0 Answers