任何人都可以使用DBI的do()方法提供创建表触发器的语法.它似乎并不像我把一切都放在一条线上.不知道我做错了什么.这是我得到的:
$dbh->do("CREATE TABLE image(img_id integer primary key, md5sum text, path text, name text, date DATE)");
$dbh->do("CREATE TRIGGER insert_img_date AFTER INSERT ON image BEGIN UPDATE image SET date = DATETIME('NOW') END");
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用核心数据内置的表管理来构建iPhone应用程序.我想与MSSQL或MySQL数据库同步数据.核心数据与SQLite兼容,所以我认为它可以作为桥梁.任何人都可以想到如何实现这一功能?
我在sqlite3中获取准备好的语句时遇到了麻烦.我正在使用Perl和Perl DBD框架.以下是我使用的代码:
#This is a function I have defined
sub query($@){
my $st = $db->prepare(shift);
$st->execute(@_);
}
#And it is used like so
query("UPDATE rooms SET name = ?, SET capacity = ? WHERE id = ?",
$name, $capacity, $id);
Run Code Online (Sandbox Code Playgroud)
当我尝试时,我收到以下错误:
DBD::SQLite::db prepare failed: near "SET": syntax error(1) at dbdimp.c line 271 at database.pm line 80.
为什么我会收到这个错误?如果我在不使用准备好的语句的情 我的应用程序中的每个其他预准备语句都有效,但UPDATE查询除外.
如何在表中声明日期数据类型?它只是以下几点?
CREATE TABLE sampleDB (..., sampledate DATE, ...)
Run Code Online (Sandbox Code Playgroud)
现在,如果我想通过POST表单使用字符串查询:
<?php
$formdate = $_POST["inputname"];
if($formdate) {
echo "Searching using query: ".$formdate."<br>";
$db = new SQLiteDatabase("testDB.db");
$query = $db->query("SELECT * FROM sampleDB WHERE sampledate = ".$formdate);
while($entry = $query->fetch(SQLITE_ASSOC)) {
echo "result: " ... "<br>";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.它不会返回我想要的条目.
当我存储日期为一个字符串,字符串比较,一切都很好,但如果SQLite的有一个日期数据类型,我觉得应该有办法用它!
有时在创建SQL查询时,假设在获取数据时引擎应使用其中一个索引.但不总是.如果没有一些必需品,发动机可能会逐个处理这些行.这是一种方式(对于sqlite)确定是否使用了索引?我的意思是在比rowid表格中的SELECT rowid更复杂的情况下由rowid 出现问题因为如果我们用简单的基数进行测试,时间测量将无济于事,它们之间的差异将是最小的.
所以我只是尝试将我的第一个rails应用程序从我的笔记本电脑上的开发环境迁移到我的托管环境(只是另一台面向外部的机器),但我似乎一直在试图运行我的应用程序时遇到错误.
基本上我已经正确配置了apache和乘客,因为主站点仍然没有问题,但是当我尝试浏览运行rails应用程序的子目录时,我得到500错误说出错了.查看生产日志后,它表示没有数据
Processing CourseController#list (for 76.26.115.2 at 2009-11-25 09:30:13) [GET]
Parameters: {"action"=>"list", "controller"=>"course"}
ActiveRecord::StatementInvalid (SQLite3::SQLException: no such table: courses: SELECT * FROM "courses" ):
app/controllers/course_controller.rb:5:in `list'
passenger (2.2.5) lib/phusion_passenger/rack/request_handler.rb:95:in `process_request'
passenger (2.2.5) lib/phusion_passenger/abstract_request_handler.rb:207:in `main_loop'
passenger (2.2.5) lib/phusion_passenger/railz/application_spawner.rb:378:in `start_request_handler'
passenger (2.2.5) lib/phusion_passenger/railz/application_spawner.rb:336:in `handle_spawn_application'
passenger (2.2.5) lib/phusion_passenger/utils.rb:183:in `safe_fork'
passenger (2.2.5) lib/phusion_passenger/railz/application_spawner.rb:334:in `handle_spawn_application'
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:352:in `__send__'
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:163:in `start'
passenger (2.2.5) lib/phusion_passenger/railz/application_spawner.rb:213:in `start'
passenger (2.2.5) lib/phusion_passenger/spawn_manager.rb:262:in `spawn_rails_application'
passenger (2.2.5) lib/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add'
passenger (2.2.5) …Run Code Online (Sandbox Code Playgroud) 首先请让我说我对客观的c开发很新.我正在为iphone编写一个供个人使用的小应用程序,但是在执行以下代码时遇到了一些问题:
NSString *sql = [[NSString alloc] initWithFormat:@"select color_r, color_g, color_b from Calendar where ROWID = %@", [calendarsID objectForKey:[arrayColors objectAtIndex:row]]];
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK)
Run Code Online (Sandbox Code Playgroud)
编译器告诉我,我从不兼容的指针类型传递sqlite3_prepare_v2的参数2.无论如何,程序会被编译并运行,但是当它必须执行我刚刚向您显示的代码时,它会产生错误.它表示查询中存在语法错误,语法错误仅在查询的最后部分.而不是:
从Calendar中选择color_,color_g,color_b,其中ROWID = 63(例如)
我在最后一个数字的位置得到了奇怪的字符(63).我想这是一个与字符串转换有关的问题.可以请任何人帮帮我吗?
非常感谢您的关注.阿莱西奥
目前我无法使用SQL Server测试我的代码.我一无所知,一直在使用SQLite.切换时我应该知道什么?我的应用程序是用C#.NET编写的
我想分开执行查询.下面的myprepare函数打开数据库连接并运行sqlite3_prepare_v2函数.一旦在myprepare的范围内执行了sqlite3_open,selectstmt和database就会分配有效的地址.但是,一旦我退出myprepare,他们的地址就会被擦除到0x0.
sqlite3_stmt *selectstmt = nil;
sqlite3 *database = nil;
[anInstance myprepare:selectstmt theDatabase:database]; //assignments are fine inside here
//here, the above values will be 0x0
Run Code Online (Sandbox Code Playgroud)
为什么selectstmt和database的值不在myprepare之外?
我正在开发iphone应用程序的离线实现.我无法将pdf文件插入sqlite DB.任何人都可以帮我将pdf/xls插入sqlite DB.提前致谢!
sqlite ×10
iphone ×3
cocoa-touch ×2
objective-c ×2
perl ×2
.net ×1
apache ×1
cocoa ×1
core-data ×1
date ×1
dbi ×1
mysql ×1
nsstring ×1
offline ×1
offline-mode ×1
optimization ×1
passenger ×1
porting ×1
sql ×1
sql-server ×1
syntax-error ×1