#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);
}
}
}
原文链接:https://www.f2er.com/sqlite/200490.html