c# - sqlite database is locked on insertion -
there's simple code
var insert = @"insert [files] ( [name], [fullname], [md5]) values (@name, @fullname, @md5);"; using (var con = _db.openconnection()) { using (var cmd = con.createcommand()) { cmd.commandtext = insert; cmd.parameters.addwithvalue("@name", item.name); cmd.parameters.addwithvalue("@fullname", item.fullname); cmd.parameters.addwithvalue("@md5", item.md5); cmd.executenonquery(); } }
applications hangs time when executing
cmd.executenonquery();
and fails exception "database locked". why happening? application not multithreaded. db file just-created.
problem solved. before code there call sqlcommand.executereader(). though connection , command created reader disposed, reader wasn't disposed. after fixing "using(reader)" connection closed , error above disappeared.
in total: datareader can still hold connection if connection , sqlcommand disposed explicitly.
Comments
Post a Comment