在我的应用程序中,我在SQLite数据库中有多个图像,因为我想在按钮点击时更改为下一个图像。
这是我的代码:
-(void)Readthesqlitefile:(NSInteger *)sno
{
sqlite3 *database;//database object
NSString *docpath=[self doccumentspath];//get sqlite path
const char *ch=[docpath UTF8String];//string to constant char UTF8string main part to connect DB
if (sqlite3_open(ch, &database)==SQLITE_OK) {
const char *chstmt="SELECT * FROM animal where rowid= = %d",sno;
sqlite3_stmt *sqlstmt;//to execute the above statement
if (sqlite3_prepare_v2(database, chstmt, -1, &sqlstmt, NULL)==SQLITE_OK)
{
while (sqlite3_step(sqlstmt)==SQLITE_ROW)
{
const char *Bname=(char *)sqlite3_column_text(sqlstmt, 0);
//converting const char to nsstring
NSString *Bndname=[NSString stringWithFormat:@"%s",Bname];
NSLog(@"Brand Names=%@",Bndname);
lb1.text=[NSString stringWithFormat:Bndname];
NSUInteger legnt=sqlite3_column_bytes(sqlstmt, 1);
if (legnt>0) {
NSData *dt=[NSData dataWithBytes:sqlite3_column_blob(sqlstmt, 1) length:legnt];
clsimg=[UIImage imageWithData:dt];//converting data to image
imager.image=clsimg;
}
else {
clsimg=nil;
}
}
}
sqlite3_finalize(sqlstmt);
}
sqlite3_close(database);
}
按钮点击功能:
-(IBAction)changenext
{
int j;
for (j=1; j<10; j++)
{
[self Readthesqlitefile:j];
}
}
它不起作用。请帮我解决一下。
答案 0 :(得分:2)
根据您的问题,我了解您需要在每次点击按钮时更改图像。如果我是正确的,那么更改changenext
方法,如:
-(IBAction)changenext
{
static int j = 0;
if (j > 10)
{
j = 0;
}
[self Readthesqlitefile:j];
j++;
}
上述方法将在每次点击按钮时更改图像。显示最后一张图像后,它再次从第一张图像开始。
修改强>
这条线似乎也错了
const char *chstmt="SELECT * FROM animal where rowid= = %d",sno;
。
sqlite3中没有==
运算符(我是这么认为的)。
将该行替换为
NSString *query = [NSString stringWithFormat:@"SELECT * FROM animal where rowid = %d",sno];
const char *chstmt = [query UTF8String];
答案 1 :(得分:1)
-(void)Readthesqlitefile:(NSInteger *)sno
它将指针作为参数,但您传递一个值。
const char *chstmt="SELECT * FROM animal where rowid= = %d",sno;
也许这一行应该将其格式化为sql语句,格式代码在哪里?
更改下一部分,我认为Midhun MP的答案是正确的解决方案
答案 2 :(得分:0)
好吧,我们无法给出确切的答案,因为所有数据都在您身边,但您可以尝试使用此代码来检查数据的完整性,
NSData *dt=[NSData dataWithBytes:sqlite3_column_blob(sqlstmt, 1) length:legnt];
UIImage *clsimg=[UIImage imageWithData:dt]; //Creating new object for UIImage
if(clsimg!=nil)
{
imager.image=clsimg; //I'm assuming that imager is added in IB or you've created it before assigning clsimg.
clsimg = nil;
}
else
{
NSLog(@"No clsimg created, may problem in converting.");
}
答案 3 :(得分:0)
假设你的UIImageView(imageView)
[imageView setImage:clsimg];