iPhone:从MySQL数据库服务器上
问题描述:
查看图像我是新手与iPhone编程。我有一个上传图片从iPhone到服务器,它在MySQL数据库存储在服务器的任务。之后,我从数据库中检索图像并将其显示在iPhone上。iPhone:从MySQL数据库服务器上
在上传: 我用ASIFormDataRequest到的图像数据发送到服务器和PHP脚本(uploadpicture.php)将图像数据存储到数据库BLOB数据类型。
有关下载: 我用NSURLRequest与NSURLConnection和PHP脚本(downloadpicture.php)从数据库中检索图像并将其发送回iphone。
这是一个PHP脚本:
$con = mysql_connect("localhost:8889", "root", "root");
if (!$con) {
echo "can not connect database";
die("Could not connect: " .mysql_error());
}
echo "Connect database succesfully";
mysql_select_db("myDatabase", $con);
$result = mysql_query("select * from pictures" ,$con);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "{$row['id']}";
echo "{$row['title']}";
echo "{$row['description']}";
echo "{$row['image']}";
echo "{$row['rate']}";
echo "{$row['numberofrate']}";
echo "{$row['numberofdownload']}";
echo "{$row['numberofcomment']}";
echo "<br/>";
}
mysql_close($con);
echo "completed";
这是与obj-C代码:
- (void) connectionDidFinishLoading:(NSURLConnection *)connection {
self.connection = nil;
NSString * dataStr = [[NSString alloc] initWithData:self.receivedData encoding:NSUTF8StringEncoding];
NSArray * lines = [dataStr componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
NSMutableArray * res = [NSMutableArray arrayWithCapacity:[lines count]];
NSString * line = nil;
Picture * pic = nil;
for (NSUInteger i = 0; i < [lines count]; i++) {
line = (NSString*) [lines objectAtIndex:i];
NSArray * arr = [line componentsSeparatedByString:@","];
pic = [[Picture alloc] init];
pic.pictureId = [[NSDecimalNumber decimalNumberWithString:(NSString *) [arr objectAtIndex:0]] intValue];
pic.title = (NSString*) [arr objectAtIndex:1];
pic.description = (NSString*) [arr objectAtIndex:2];
pic.imageData = (NSData*) [arr objectAtIndex:3];
pic.rate = [[NSDecimalNumber decimalNumberWithString:(NSString*) [arr objectAtIndex:4]] floatValue];
pic.numberOfRate = [[NSDecimalNumber decimalNumberWithString:(NSString*) [arr objectAtIndex:5]] intValue];
pic.numberOfDownload = [[NSDecimalNumber decimalNumberWithString:(NSString*) [arr objectAtIndex:6]] intValue];
pic.numberOfComment = [[NSDecimalNumber decimalNumberWithString:(NSString*) [arr objectAtIndex:7]] intValue];
[res addObject:pic];
[pic release];
}
self.picturesData = res;
//display a image
[self displayAImage];
[dataStr release];
}
但dataStr是在方法为零。任何人都可以帮助我解决这个问题。任何帮助,将不胜感激。
谢谢。
答
我假设receivedData
是NSMutableData
对象。你实现委托方法-connection:didReceiveData:
和-connection:didReceiveResponse:
?
如果不是,您可能想要这样做,并在-connection:didReceiveData:
只需将传入数据附加到NSMutableData
对象。
如果您确实已经实现了这些方法,那么你可能要检查,看看是否委托方法获取调用,实际上有数据在临时数据存储,当你完成的请求。如果没有任何内容,可能没有任何内容返回给委托方法。