iOS 数据库第二。三张表不能插入数据,第一张可以,为什么

问题描述

iOS 数据库第二。三张表不能插入数据,第一张可以,为什么
  • (id)init
    {
    self = [super init];
    if (self) {

    NSArray * arr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    _filePath = [arr objectAtIndex:0];
    
    _filePath = [_filePath stringByAppendingPathComponent:@"Test.db"];
    
    NSLog(@"filePath is %@",_filePath);
    _dataBase = [FMDatabase databaseWithPath:_filePath];
    
    if (![_dataBase open]) {
        NSLog(@"can not open dataBase!");
        return nil;
    }
    NSArray *array=[NSArray arrayWithObjects:
                    @"CREATE TABLE if not exists student (Num integer PRIMARY KEY AUTOINCREMENT,studentNumber text,studentName text,studentAddress text)",
                    @"CREATE TABLE if not exists course (b integer PRIMARY KEY AUTOINCREMENT,courseNumber text,courseName text,courseTeacher text)",
                    @"CREATE TABLE if not exists score (a integer PRIMARY KEY AUTOINCREMENT,studentNumber text,courseName text,score text)", nil];
    
    for (NSString * sql in array) {
        [_dataBase executeUpdate:sql];
    }
    

    }
    return self;
    }

  • (BOOL)insertDataToDataBase:(id)model andKey:(NSInteger)key;
    {

    if ([model isKindOfClass:[StedentModel class]]) {

    StedentModel *sModel = (StedentModel *)model;
    
    return [_dataBase executeUpdate:@"INSERT INTO student (Num,studentNumber,studentName,studentAddress) VALUES (?,?,?,?)",[NSNumber numberWithInt:key],sModel.studentNumber,sModel.studentName,sModel.studentAddress];
    

    }
    if ([model isKindOfClass:[CourseModel class]]){

    CourseModel *cModel = (CourseModel *)model;
    return [_dataBase executeUpdate:@"INSERT INTO course (b,courseNumber,courseName,courseTeacher,) VALUES (?,?,?,?)",[NSNumber numberWithInt:key],cModel.courseNumber,cModel.courseName,cModel.courseTeacher];
    

    }
    if ([model isKindOfClass:[ScoreModel class]]){

    ScoreModel *sModel = (ScoreModel *)model;
    return [_dataBase executeUpdate:@"INSERT INTO score (a,studentNumber,courseName,score,) VALUES (?,?,?,?)",[NSNumber numberWithInt:key],sModel.studentNumber,sModel.courseName,sModel.score];
    

    }else{
    return YES;
    }

}
Nicholas 09:59:47

  • (IBAction)saveButtonPressed:(UIButton *)sender {

    StedentModel *stuModel = [[StedentModel alloc]init];
    CourseModel *couModel = [[CourseModel alloc]init];
    ScoreModel *scoModel = [[ScoreModel alloc]init];

    stuModel.studentNumber = _sNumberTextField.text;
    stuModel.studentName = _sNameTextField.text;
    stuModel.studentAddress = _sAddressTextField.text;

    couModel.courseNumber = _cNumberTextField.text;
    couModel.courseName = _cName.text;
    couModel.courseTeacher = _cTeacherTextField.text;

    scoModel.studentNumber = _scoreNumberTextField.text;
    scoModel.courseName = _scoreNameTextField.text;
    scoModel.score = _scoreTextField.text;

    DateBaseSimple *dateBase = [DateBaseSimple sharedDataBase];
    [dateBase insertDataToDataBase:couModel andKey:4];
    [dateBase insertDataToDataBase:scoModel andKey:4];
    [dateBase insertDataToDataBase:stuModel andKey:4];

}

时间: 2024-09-04 07:33:55

iOS 数据库第二。三张表不能插入数据,第一张可以,为什么的相关文章

在rails中向多张关联的表中插入数据的问题。

问题描述 我现在要讲一个服务注册到数据库中去,先简单说一下情况因为一个服务有具体的名称,还有不同的服务类型(其实这里有两种类型,比如下面的soap_services,还有一个是rest_services,注册的时候可以选择注册的类型,然后跳转到具体的类型页面,提交相应的数据,这里提交的是XML的文档,我将它进行了解析,但是不知道如何完整的存到数据库里面去),同时还有若干个操作,每个操作又有若个个参数我现在要用四张表来存储,第一个表里面只存服务的名称,第二个表里面存服务名称和描述,第三个表里面存储

trigger 可以对一张表进行插入时同时修改另一张 怎么做?

问题描述 两数据库,可以对一张表进行插入时同时修改另一张:用trigger怎么做请教,结合例子更好! 解决方案 解决方案二:/******对象:触发器dbo.Trigger_SynTradeTypeForInsertOrUpdate脚本日期:2007-3-421:33:23******/CreateTRIGGERTrigger_SynTradeTypeForInsertOrUpdateONtradeFORInsert,UpdateASBEGINTRANupdateTradesetT_Type=(

sql-如何在vsGridView中插入一张表的部分数据?

问题描述 如何在vsGridView中插入一张表的部分数据? GridView中: 我用的是SQL2008,现在我想只要这个表里商品名称含有"包"字的数据,滤掉其他无关的过滤掉,怎么实现啊,新手求大神解答啊!!!!!!!!! 解决方案 DataTable或者SQL中过滤,将结果返回数据源,不需要改GridView的代码. 如果用sql就是 select * from 你的表 where 字段 like '%包%'

判断一张表是否有数据,如果有,马上进行处理,怎么做才好?

问题描述 我现在有一张空表,如果表里有新数据就马上用.net程序进行处理,数据是不固定的,可能1天有1次新据,也可能好多天有1次新数据进来.用定时器实时扫描来做好像太浪费资源,有没有其他可行的办法实现? 解决方案 解决方案二:什么叫新数据...insertinto的叫新数据吗?你可以写insert触发器来实现.....触发器里面调用XXOO来处理当然了XXOO可能是存储过程啦sql语句啦..或者是webservice都可以...解决方案三:就是判断这张表是否有数据,如果有就调用.net程序来处理

一列一列向access表中插入数据,列数是一个变量,用循环,用什么sql语句

问题描述 一列一列向access表中插入数据,列数是一个变量,用循环,用什么sql语句 用sql语句向ACCESS的一张表中添加数据,因为具体的列数还不清楚,所以想用循环一列一列向ACCESS表中插入数据,采用insert,为什么插入30行数据(即一列),当插第二列数据时就从第31行,第二列开始了(应该是第一行第二列开始).如果不用insert,用update那语句怎么写,一直出错. 解决方案 你的数据库表结构有问题.你应该把你的列作为行来插入.数据库中的表,列就应该是确定的. 解决方案二: 你

mysql-php从数据库中读取某个表中的数据并在页面中一条条列出来,代码如下,数据库里有信息,显示不出来

问题描述 php从数据库中读取某个表中的数据并在页面中一条条列出来,代码如下,数据库里有信息,显示不出来 <?php include(""connectDB.php""); @$query=mysql_query($conSELECT * from xx""); @$result=mysql_fetch_array(@$query); if($result==true){ ?> <table width=""

android SQLite向表中插入数据的问题

问题描述 android SQLite向表中插入数据的问题 package com.example.xiangwei; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.test.AndroidTestCase; public class TestCase extends AndroidTestCase { private MyOpenHelper

JAVA两个部署在不同服务器上的程序访问同一个表,如何避免同时向这个表中插入数据 ?

问题描述 JAVA两个部署在不同服务器上的程序访问同一个表,如何避免同时向这个表中插入数据 ? JAVA两个部署在不同服务器上的程序访问同一个表,如何避免同时向这个表中插入数据 ?刚写了个程序发现存在这个问题,原以为这种概率不会太高,但还是存在,怎么解决?谢谢 解决方案 其实和进程互斥的原理应该是一样的吧,在某一服务器访问该公共表的时候加锁,并同步更新数据至所有可达服务器,这样别的服务器也有访问请求时,就会等锁解开再进行.加锁的服务器程序应负责在释放资源后解锁. 解决方案二: 情况是这样的,现在

sqlserver-sql 通过like查询出一张表的一些数据,然后打算更新其中一列数据

问题描述 sql 通过like查询出一张表的一些数据,然后打算更新其中一列数据 请问下,先通过like查询a表中一些数据然后打算更新查询结果中一列数据,请问怎么弄你? 解决方案 update a set 字段1='新值' where 字段2 like '%条件%' 解决方案二: update tablename set 字段='XX' where 字段 like '%XX%' 解决方案三: 如果是在Oracle下,我用PLSQL Developer试过这样的方式.select * from ta