我一直在尝试更新特定的行一段时间,似乎有两种方法可以做到这一点.根据我的阅读和尝试,你可以使用:
execSQL(String sql) 方法
或者:
update(String table, ContentValues values, String whereClause, String[] whereArgs) 方法.
(让我知道这是不正确的,因为我是Android新手,对SQL很新.)
那么让我来看看我的实际代码.
myDB.update(TableName, "(Field1, Field2, Field3)" + " VALUES ('Bob', 19, 'Male')", "where _id = 1", null);
Run Code Online (Sandbox Code Playgroud)
我想完成这个:
更新Field1,Field2和Field3,其中主键(_id)等于1.
Eclipse在"更新"一词的下方给了我一条红线,并给出了我的解释:
SQLiteDatabase类型中的方法update(String,ContentValues,String,String [])不适用于参数(String,String,String,null)
我猜我没有正确分配ContentValues.谁能指出我正确的方向?
我在SQLite数据库中有一组数据.我需要在设备上查看数据库.我怎么做?
我已经检查了ddms模式.文件资源管理器中的数据为空.
当一个整数列在SQLite表中被标记为主键时,是否应该为它显式创建索引?SQLite似乎不会自动为主键列创建索引,但考虑到其目的,它可能无论如何都要对其进行索引?(我会一直在搜索那个专栏).
对于字符串主键,情况会有所不同吗?
我在我的ASP.NET项目中安装了ELMAH 1.1 .Net 3.5 x64,现在我收到此错误(每当我尝试查看任何页面时):
无法加载文件或程序集'System.Data.SQLite,Version = 1.0.61.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依赖项之一.尝试加载格式不正确的程序.
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.BadImageFormatException:无法加载文件或程序集'System.Data.SQLite,Version = 1.0.61.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依赖项之一.尝试加载格式不正确的程序.
底部有更多错误详情.
我的Active Solution平台是"任何CPU",我在x64上运行x64 Windows 7,当然还有处理器.我们使用这个版本的ELMAH的原因是因为1.0 .Net 3.5(x86,它是它编译的唯一平台)在我们的x64 Windows服务器上给了我们同样的错误.
我已经尝试编译x86和x64,我得到了同样的错误.我已经尝试删除所有编译器输出(bin和obj).最后我直接引用了SQLite dll,这是项目在服务器上工作所不需要的东西,我有这个编译错误:
错误1警告错误:程序集生成 - 引用程序集'System.Data.SQLite.dll'针对不同的处理器MyProject
任何想法可能是什么问题?
更多错误详情:
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:
[BadImageFormatException:无法加载文件或程序集'System.Data.SQLite,Version = 1.0.61.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依赖项之一.一个试图加载程序使用不正确的格式.]
System.Reflection.Assembly._nLoad(的AssemblyName文件名,字符串的代码库,证据assemblySecurity,装配locationHint,StackCrawlMark&stackMark,布尔throwOnFileNotFound,布尔forIntrospection)0
System.Reflection.Assembly .nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,Assembly locationHint,StackCrawlMark&stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection)+43
System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,Evidence assemblySecurity,StackCrawlMark&stackMark,Boolean forIntrospection)+127 System. Reflection.Assembly.InternalLoad(字符串assemblyString,证据assemblySecurity,StackCrawlMark&stackMark,布尔forIntrospection)142 System.Reflection.Assembly.Load(字符串assemblyString)28
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串的AssemblyName,布尔starDirective)+ 46[ConfigurationErrorsException:无法加载文件或程序集'System.Data.SQLite,Version = 1.0.61.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依赖项之一.一个试图加载程序使用不正确的格式.]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串的AssemblyName,布尔starDirective)613 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()203 System.Web.Configuration .CompilationSection.LoadAssembly(集信息AI)105个
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)178
System.Web.Compilation.BuildProvidersCompiler..ctor(VirtualPath用configPath,布尔supportLocalization,字符串outputAssemblyName)54
的System.Web .Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp)+232 …
我只是学习使用SQLite,如果可能的话,我很好奇:
加密数据库文件?
密码保护数据库的开放?
PS.我知道有这个"SQLite加密扩展(SEE).",但根据文档,"SEE是许可软件...."和"SEE的永久源代码许可证的成本是2000美元."
我有一个rails应用程序,其数据库在SQLite(开发和生产).由于我要转移到heroku,我想将我的数据库转换为PostgreSQL.
无论如何,我听说本地的开发数据库不需要从SQLite更改,所以我不需要改变它,但是,如何将生产环境从SQLite更改为PostgreSQL?
有没有人曾经这样做过,可以帮忙吗?
PS我不确定这个过程到底是什么,但我听说过将数据库从SQLite迁移到PostgreSQL,需要做什么?
我有一个SQLite数据库,版本3,我使用C#创建一个使用此数据库的应用程序.
我想在表中使用timestamp字段进行并发,但我注意到当我插入新记录时,此字段未设置,并且为null.
例如,在MS SQL Server中,如果我使用时间戳字段,这由数据库更新,我不必自己设置.这在SQLite中可能吗?
我完全不熟悉Python的sqlite3模块(以及一般的SQL),这完全让我感到困惑.对cursor物体描述的充分缺乏(相反,它们的必要性)似乎也很奇怪.
这段代码是首选方式:
import sqlite3
conn = sqlite3.connect("db.sqlite")
c = conn.cursor()
c.execute('''insert into table "users" values ("Jack Bauer", "555-555-5555")''')
conn.commit()
c.close()
Run Code Online (Sandbox Code Playgroud)
这个不是,即使它工作得很好而没有(看似毫无意义)cursor:
import sqlite3
conn = sqlite3.connect("db.sqlite")
conn.execute('''insert into table "users" values ("Jack Bauer", "555-555-5555")''')
conn.commit()
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么需要一个cursor?
这看起来似乎毫无意义.对于我的脚本中访问数据库的每个方法,我应该创建并销毁一个cursor?
为什么不直接使用该connection对象?
我正在使用SQLiteDatabase的查询方法.我如何使用查询方法?
我试过这个:
Cursor cursor = sqLiteDatabase.query(
tableName, tableColumns, whereClause, whereArgs, groupBy, having, orderBy);
Run Code Online (Sandbox Code Playgroud)
tableColumns - columns参数构造如下.
String[] columns = new String[]{KEY_ID, KEY_CONTENT};
Run Code Online (Sandbox Code Playgroud)
如果我们需要获取所有字段,那么应该如何构造column参数.我们是否需要在String数组中包含所有字段名称?
如何正确使用查询方法?