加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用SQLite存储和查询数据的简单实现(源代码+注释)

发布时间:2020-12-12 20:01:20 所属栏目:百科 来源:网络整理
导读:#import "ViewController.h" // 定义宏方便引用 @interface ViewController () @end @implementation ViewController @synthesize name; @synthesize classname; @synthesize num; //ps ;;如果出现未能识别的错误,那那个错误很可能跟控件的输入输出口错误

#import "ViewController.h"


//定义宏方便引用


@interface ViewController ()


@end


@implementation ViewController

@synthesize name;

@synthesize classname;

@synthesize num;




//ps;;如果出现未能识别的错误,那那个错误很可能跟控件的输入输出口错误有关。主要是逻辑错误





-(NSString*)databasePath //===========我把加载数据和获得路径的过程封装为一个方法

{


NSString *docsDir;

NSArray *dirPaths;

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

docsDir = [dirPaths objectAtIndex:0];

NSString *databasePath = [[NSString alloc] initWithString:[docsDir stringByAppendingPathComponent:@"info.db"]];//新建一个数据的名字

return databasePath; //返回路径

}


- (IBAction)touch:(id)sender {

[NSThread sleepForTimeInterval:0.1]; //延迟动作发生产生一点动画效果

CGAffineTransform pTransform = CGAffineTransformMakeTranslation(0,-100);

//使视图使用这个变换

self.view.transform = pTransform;//移动view,不要挡着输入

[UIView commitAnimations]; // 动画效果

}


- (IBAction)over:(id)sender {

[NSThread sleepForTimeInterval:0.1];

CGAffineTransform

pTransform = CGAffineTransformMakeTranslation(0,0);

//使视图使用这个变换

self.view.transform = pTransform;

[UIView commitAnimations];

}


- (void)viewDidLoad

{

NSLog(@"%@",NSHomeDirectory());

[super viewDidLoad];

NSString *databasePath=[self databasePath];//调用我原来封装的方法

NSFileManager *filemanager = [NSFileManager defaultManager];

if ([filemanager fileExistsAtPath:databasePath] == NO) {

const char *dbpath = [databasePath UTF8String];

if (sqlite3_open(dbpath,&db)==SQLITE_OK) //这里的db是之前的添加的 *db

{

char *errmsg;

const char *createsql = "CREATE TABLE IF NOT EXISTS INFO (ID INTEGER PRIMARY KEY AUTOINCREMENT,NUM TEXT,CLASSNAME TEXT,NAME TEXT)";//这里是sql语言的创建列表

if (sqlite3_exec(db,createsql,NULL,&errmsg)!=SQLITE_OK) {

//status.text = @"create table failed."; 用来提示的lable

NSLog(@"woain");

}

}

}

}


-(IBAction)viewclick:(id)sender{

[num resignFirstResponder]; //uiview继承uicontrl可以实现这些方法

[classname resignFirstResponder];

[name resignFirstResponder];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}


- (IBAction)load:(id)sender {

sqlite3_stmt *statement;

NSString *databasePath=[self databasePath];

const char *dbpath = [databasePath UTF8String];

if (sqlite3_open(dbpath,&db)==SQLITE_OK) {

NSString *querySQL = [NSString stringWithFormat:@"SELECT classname,name from info where num="%@"",num.text]; //================这里就实现了用号码查询,其他的可以另外实现

const char *querystatement = [querySQL UTF8String];

if (sqlite3_prepare_v2(db,querystatement,-1,&statement,NULL)==SQLITE_OK) {

if (sqlite3_step(statement)==SQLITE_ROW) {

NSString *classnameField = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement,0)];

classname.text = classnameField;

NSString *nameField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement,1)];

name.text = nameField;

//status.text = @"find~~~";

}

sqlite3_finalize(statement);

}

sqlite3_close(db);

}}


- (IBAction)save:(id)sender {

NSString *databasePath=[self databasePath];

sqlite3_stmt *statement;

const char *dbpath = [databasePath UTF8String];

if (sqlite3_open(dbpath,&db)==SQLITE_OK)

{

if ([num.text isEqualToString:@""]) {

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"SORRY!" message:@"number cannot be nil!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alert show];

}

else {

NSString *insertSql = [NSString stringWithFormat:@"INSERT INTO INFO (num,classname,name) VALUES("%@","%@","%@")",num.text,classname.text,name.text];

const char *insertstaement = [insertSql UTF8String];

sqlite3_prepare_v2(db,insertstaement,NULL);

NSLog(@"chenggong");

if (sqlite3_step(statement)==SQLITE_DONE) {

// status.text = @"save to DB.";

num.text = @"";

classname.text = @"";

name.text = @"";

NSLog(@"chenggong");

}

else{

NSLog(@"sibai");

}

sqlite3_finalize(statement);

sqlite3_close(db);

}

}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读