关于数据库更新及插入有关问题的请问

关于数据库更新及插入问题的请教
先向大家说明下数据库的一些问题,在数据库中的sample内的表table1中有主键名为TE的字段和名为SEN的float型字段。
我自己写的程序内有两个按键buttonA和buttonB以及一个EDIT框。
(SEN在初始状态下是空的)程序实现的功能是:事件1.当我向EDIT框内输入变量名为m_edit1的数字并按下buttonA时向数据库内符合TE=m_edit1的SEN字段添加数字1.
事件2.当我按下buttonB时更改TE=m_edit1对应的SEN为0.
我想实现的是如果用户只按buttonA则保存1,一旦用户按下buttonB就保存0.需要特别说明的是,事件1和事件2的发生顺序是不一定的。
用((update table1 set SEN=1 where TE="%s"),m_edit1),当SEN为空时,是添加失败的。
求教我该怎么办(不对数据库添加新的字段前提下),最好把两个事件的代码及说明写一下,小弟新手在这里先谢过大家啦~
PS:我有个想法是先向满足TE=edit1的SEN添加一个数字n使其不为空,然后事件1和2都用update实现。不知道妥否?如果可以的话我该怎么使用insert into向目标位置插入数字n?正在学习中,只有想法没有实现的资本呀 还请会的贴出代码 让小弟学习下~~

------解决方案--------------------
sql char[1024]={0};
if ( 0== m_edit1 )
{
sprintf(sql,"update table1 set SEN=1 where TE='%s')",m_edit1);
}
else 
{
sprintf(sql,"insert into table1(cloum1,cloum2) value('', '%s')",m_edit1);
}
------解决方案--------------------
我用的是Xproer.OleDb这个类库,以.Net风格封装的,写起代码来像堆积木一样简单。
下面是使用Xproer.OleDb对数据库进行操作的示例:
C/C++ code
#include "stdafx.h"
#include "XproerDataDef.h"
#include "OleDb/OleDbCommand.h"
#include "OleDb/OleDbConnection.h"
#include "OleDb/OleDbDataReader.h"
#include "OleDb/DataTable.h"
#include "OleDb/DataRow.h"
#include "OleDb/DataValue.h"

using namespace Xproer::OleDb;

//获取DataTable的示例
void ADODataTable(OleDbCommand& cmd)
{
    int count = 0;
    cmd.ExecuteScalar(L"select count(*) from xdb_news",count);
    auto_ptr<DataTable> table;
    table.reset(cmd.ExecuteDataTable(L"select top 10 IsTop from xdb_news"));

    size_t rowCount = table->GetRowsCount();
    for (int i = 0 ; i < rowCount ; ++i)
    {
        DataRow* row = table->GetRow(i);
        DataValue* val = row->GetCel(0);
        
        printf("时间:%d \r\n", val->ToBoolean() );
    }
}

//使用OleDbDataReader快速读取数据的示例
void ADORead(OleDbCommand& cmd)
{
    OleDbDataReader* r = cmd.ExecuteReader(L"select ProductPrice from xdb_news");
    USES_CONVERSION;
    wstring title;
    while(r->Read())
    {
        //r->GetString(0,title);        
        //printf("标题:%s \r\n",W2A(title.c_str()));
        printf("ID:%f \r\n", r->GetFloat(0) );
    }
    r->Close();
}

//通过变量向数据库安全添加数据的示例
void ADOAdd(OleDbCommand& cmd)
{
    cmd.SetCommandText(L"insert into xdb_about(VDouble) values(@VDouble)");
    cmd.AddDoubleParam(L"@VDouble",125022.3180);

    cmd.ExecuteNonQuery();
}

//高性能向数据库插入数据的示例
void ADOParam(OleDbCommand& cmd)
{
    cmd.SetCommandText(L"delete from xdb_news where ID=@ID;");
    cmd.AddInt32Param(L"@ID",886);
    cmd.SetPrepared(true);

    _variant_t index = (short)0;
    _ParameterPtr param = cmd.GetCommand()->Parameters->GetItem(index);
    param->Value = 887;
    cmd.ExecuteNonQuery();
    param->Value = 888;
    cmd.ExecuteNonQuery();
    param->Value = 889;
    cmd.ExecuteNonQuery();
    param->Value = 890;
    cmd.ExecuteNonQuery();
    param->Value = 891;
    cmd.ExecuteNonQuery();
}

//向数据库添加实数的示例
void NumericScaleX(OleDbCommand& cmd)
{
    OleDbDataReader* r = cmd.ExecuteReader(L"select ProductPrice from xdb_news");
    _RecordsetPtr& rs = r->GetRecordsetPtr();
    rs->MoveFirst();

    _variant_t vi = (short)0;
    FieldPtr fd = rs->Fields->GetItem(vi);
    unsigned char numeri = fd->GetNumericScale();
    unsigned char precision = fd->GetPrecision();

    printf("GetNumericScale:%d\r\n", fd->GetNumericScale() );
    printf("GetPrecision:%d\r\n", fd->GetPrecision() );
    printf("Value:%f\r\n", (float)fd->Value );
    r->Close();
}

int _tmain(int argc, _TCHAR* argv[])
{
    ::CoInitialize(NULL);
    OleDbConnection con;
    con.SetAccessConStr(L"F:\\vc9\\adoDemo\\Debug\\db.mdb");
    con.Open();

    OleDbCommand cmd(&con);

    ADORead(cmd);
    
    con.Close();

    ::CoUninitialize();
    //printf("总数:%d",count);
    system("pause");
    return 0;
}