这是引发异常的代码
public Configuration GetConfiguration()
{
var persister = SQLiteConfiguration
.Standard
.UsingFile("Test.db")
.ShowSql();
var configuration = Fluently
.Configure()
.Database(persister)
.Mappings(map => map.FluentMappings.AddFromAssemblyOf<WordMap>())
.BuildConfiguration();
new SchemaExport(configuration).Execute(true, true, false);
return configuration;
}
Run Code Online (Sandbox Code Playgroud)
完整的例外文字:
失败:NHibernate.HibernateException:无法从NHibernate.Driver.SQLite20Driver,NHibernate,Version = 2.1.2.4000,Culture = neutral,PublicKeyToken = aa95f207798dfdb4创建驱动程序.
----> System.Reflection.TargetInvocationException:调用目标抛出了异常.
----> NHibernate.HibernateException:找不到程序集System.Data.SQLite中的IDbCommand和IDbConnection实现.确保程序集System.Data.SQLite位于应用程序目录或全局程序集缓存中.如果程序集位于GAC中,请使用应用程序配置文件中的元素指定程序集的全名.
NHibernate的
版本是2.1.2.4000 版本的System.Data.SQLite是1.0.66.0
目标框架是3.5(x86)
System.Data.SQLite的本地副本是ON.
可能有什么不对?
我正在尝试做一个SQL查询,如
SELECT * FROM [TABLE] WHERE hostname LIKE '%myhostname%';
Run Code Online (Sandbox Code Playgroud)
这在纯SQL中工作正常,但是当我在C#中使用System.Data.SQLite时,它只适用于文字,而不是参数,例如
string sel = "SELECT * FROM [TABLE] WHERE hostname LIKE '%@host%'";
...
command.Parameters.AddWithValue("@host", "myhostname");
Run Code Online (Sandbox Code Playgroud)
这不会返回任何结果.
在我的系统上,大约86000个SQLite插入占用了20分钟,意味着每秒约70次插入.我必须做数百万,我怎么能加快它?在SQLiteConnection对象上为每一行调用Open()和Close()可能会降低性能?交易能帮忙吗?
单线的典型插入方法:
public int InsertResultItem(string runTag, int topicId,
string documentNumber, int rank, double score)
{
// Apre la connessione e imposta il comando
connection.Open();
command.CommandText = "INSERT OR IGNORE INTO Result "
+ "(RunTag, TopicId, DocumentNumber, Rank, Score) " +
"VALUES (@RunTag, @TopicId, @DocumentNumber, @Rank, @Score)";
// Imposta i parametri
command.Parameters.AddWithValue("@RunTag", runTag);
command.Parameters.AddWithValue("@TopicId", topicId);
command.Parameters.AddWithValue("@DocumentNumber", documentNumber);
command.Parameters.AddWithValue("@Rank", rank);
command.Parameters.AddWithValue("@Score", score);
// Ottieni il risultato e chiudi la connessione
int retval = command.ExecuteNonQuery();
connection.Close();
return retval;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,插入非常简单.
我正在慢慢地通过php101教程工作,并且必须编号为9,我需要SQLite.
我已经运行了SQLite3并且可以通过CLI访问,(参见一个小测试数据库的截图)但是当我在php101中尝试教程脚本时,我得到一个空白的浏览器屏幕.我现在知道这是因为SQLite3使用PDO(php101基于SQLite v2).
无法发布和映像,因此CLI说:
SQLite版本3.7.2
输入".help"获取说明
输入以";"结尾的SQL语句
sqlite> select*from books;
1 |指环王| JR托尔金
等等
而不是倒退,我试图弄清楚如何启用SQLite3 PDO驱动程序(我知道它名为sqlite),但是那些已经发布到stackoverflow上的人,似乎已经安装了SQLite驱动程序并且已经启用了,所以驱动程序配置实际上没有解释.
(抱歉可以发布图片)但PDO的phpinfo说:
我已经查看了www.phpro.org/tutorials/Introduction-to-PHP-PDO,但也没有在那里解释.
我的系统是Linux Ubuntu 10.10
Apache - 版本2.2.16
PHP版本5.3.3
SQLite 3.7.2
我试图让这个在localhost上运行作为学习辅助工具.
有人可以解释如何安装/配置SQLite3驱动程序.
我将首先展示代码:
create table products ('name' text primary key, 'price' INTEGER)
insert into table products ('name', 'price') values ('coke', 8)
insert into table products ('name', 'price') values ('sprite', 9)
Run Code Online (Sandbox Code Playgroud)
什么是SQLite3代码将焦炭行的价格列的值更改为12.
所以我希望输出为焦炭12精灵9.
非常感谢你们!
我在Python中使用sqlite3.我想知道我的UPDATE语句是否有效而没有进行另一个数据库查询:
c.execute('update students set gpa=3.5 where stuid=123')
Run Code Online (Sandbox Code Playgroud)
如果没有学生使用stuid 123,那么很明显更新失败了.
我正在尝试在OS X 10.6上安装"sqlite3-ruby"gem(或"sqlite3"gem).我正在使用ruby-1.9.2,目前我得到以下内容:
$ sqlite3 --version
3.7.4
$ sudo gem install sqlite3
Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.
/Users/folken/.rvm/rubies/ruby-1.9.2-head/bin/ruby extconf.rb
checking for sqlite3.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir …Run Code Online (Sandbox Code Playgroud) 我正在构建一些使用参数化值的预准备语句.举个例子:
SELECT * FROM "Foo" WHERE "Bar"=@param
Run Code Online (Sandbox Code Playgroud)
有时@param可能会NULL.在这种情况下,我想查询返回记录,其中Bar是NULL的,但上面的查询不会那样做.我了解到我可以使用IS运算符.换一种说法:
SELECT * FROM "Foo" WHERE "Bar" IS @param
Run Code Online (Sandbox Code Playgroud)
除了不同的处理NULL方式之外,上述两种陈述的表现方式是否还有其他不同之处?如果@param不是NULL,但是,相反,让我们说,5?IS在这种情况下使用操作员是安全(和理智)的事情吗?我应该采取其他方法吗?
我正在插入:
QSqlQuery myQuery(db);
myQuery.prepare("INSERT INTO mytable VALUES (:val1, :val2)");
myQuery.bindValue(":val1", 1);
myQuery.bindValue(":val2", 2);
myQuery.exec();
Run Code Online (Sandbox Code Playgroud)
然后我需要获取执行的SQL查询以进行日志记录.
myQuery.executedQuery()回报"INSERT INTO mytable VALUES (?, ?)".
如何使用所使用的实际绑定值来执行查询?
正如我在小应用程序中使用Sqlite所经历的那样,我总是使用sqliteadmin来使用其数据库清理功能来删除数据库中不必要的数据.
现在我想在我的应用程序中创建一个方法,其方式与sqliteadmin CleanUp相同 .
这该怎么做?
在此致谢谢
sqlite ×10
c# ×4
sql ×2
.net ×1
ado.net ×1
c++ ×1
equality ×1
gem ×1
insert ×1
nhibernate ×1
null ×1
operators ×1
pdo ×1
performance ×1
php ×1
python ×1
qt ×1
ruby ×1
sql-update ×1
sqlite3-ruby ×1