vc ACCESS数据库插入数据

 我原来的代码
void WarmDlg::DatabaseWrite(CString string)
{
try
{ //打开表
m_pRecordset->Open("SELECT * FROM 表格数据", 
(IDispatch*)m_pConnection, 
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
try
{
m_pRecordset->AddNew(); 
m_pRecordset->PutCollect("字段2", _variant_t("报警指示值"));
pRecordset->AddNew(); 
m_pRecordset->PutCollect("字段2", _variant_t("标准值"));
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
m_pRecordset->Update();//将数据更新返回数据库
m_pRecordset->Close();
}

现在我想用m_pConnection->Execute(。。。。)
插入数据,如何改,,请帮忙改一下  

我要写进去好几行数据的,以前用m_pRecordset->AddNew();,用m_pConnection->Execute怎么表示换行的 

执行Insert语句,要特别注意 会自增的Index列,这个忘了需不需要赋值了,你可以自己试试, 如果装了SQL调试Insert语句就最好不过了。

 
1、你直接用m_pConnection->Execute执行insert语句就行了啊,换行你可以用m_pConnection->movenext()啊 
2、
CString  strtemp;
strtemp.Format(
"insert into Data([CId], [CName], [PId]) values('%d', '%s','%s')" , loweNum, dlg.m_AddName, Pid);
m_pRecordset.CreateInstance(
"ADODB.Recordset" );
m_pRecordset->Open((_bstr_t)(strtemp) ,
                
_variant_t((IDispatch* )theApp.m_pConnection,  true ),
                
adOpenStatic,
                
adLockOptimistic,
                
adCmdText);
m_pRecordset.Release();
m_pRecordset->Close();  


CId ,  CName, PId 是表里表头
loweNum, dlg.m_AddName, Pid 是对应的要插入的值。
自己改改,看是不是哥要的。  

void WarmDlg::DatabaseWrite(CString string)
{
try
{ //打开表
m_pRecordset->Open("SELECT * FROM 表格数据",(IDispatch*)m_pConnection,
adOpenDynamic,
adLockOptimistic,
adCm……
上面的代码已经非常好了。
换行的问题不用考虑。
既然你是插入记录的,当然不会把当前的记录覆盖掉,如果想要覆盖的话就用update了。
另外,希望楼主尽快把这个帖子结了。
不要让上面的大哥等急了。  

ADO 连接对象 Execute 方法

  1. ///   
  2. //   
  3. // 函数名: InsertRecord   
  4. //   
  5. // 返回类型: BOOL   
  6. //   
  7. // 参数: float fValue 采集到的流量值   
  8. //   
  9. // 说明: 函数通过 ADO 连接对象的 Execute 方法   
  10. //   
  11. //       把采集时间和流量值存入数据库中。   
  12. //   
  13. // 备注: Globe_pConn 为 ADO 连接对象,全局变量   
  14. //   
  15. ///   
  16.   
  17. BOOL InsertRecord( float fValue )  
  18. {  
  19.     _variant_t var;  
  20.     CString strSQL;  
  21.     CString strTime;  
  22.   
  23.     // 获取当前时间   
  24.     CTime t = CTime::GetCurrentTime();  
  25.     strTime = t.Format(_T("%YYYY/%mm/%dd %HH:%MM:%SS"));  
  26.   
  27.     // 生成 SQL 命令   
  28.     strSQL.Format(_T("INSERT INTO [流量表]([采集时间],[流量值]) VALUES(#%s#,%f)"),strTime,fValue);  
  29.   
  30.     // 执行 SQL 命令   
  31.     Globe_pConn->Execute("",&var,adCmdText);  
  32.   
  33.     // var.intVal 等于1,表明向数据库插入记录成功   
  34.     if( var.intVal == 1 )  
  35.         return TRUE;  
  36.     else  
  37.         return FALSE;  
  38. }  

用 ADO 存取 ACCESS MDB 数据库的 是/否 数据类型时,需要注意一下。

当字段值为【真】时,它的实际数值为【-1】;

为【假】时,它为【0】。

(var.boolVal == -1) 为真时,表明列值为真。

(var.boolVal == 0) 为真时,表明列值为假。


VC中access数据库的插入,删除,修改语句  

//表为Dir(Dirno,Dirname,D_hide,D_keyword,D_path,D_size,D_time)

//Dirno,D_hide,D_size为int型

//Dirname,D_keyword,D_path为CString型

//D_time为日期型

向Dir表中插入一条记录的sql语句如下:

CString sql_in;

int count =1;

int zero = 0;

sql_in.Format("insert intoDir(Dirno,Dirname,D_hide,D_keyword,D_path,D_size,D_time)values('%d','"+Dirname+"','%d','"+Dirname+"','"+Dirname+"','%d','"+D_time+"')",count,zero,zero);

其中count,zero,zero为int型,


利用ADO:
_ConnectionPtr cnn;
CString sSql;
sSql.Format("INSERT INTO 表名  values('%s','%s','%s'),s0,s1,s2);
cnn->Execute((_bstr_t)sSql,NULL,adCmdText);


利用ADO:
1、在StdAfx.h中#import "C:\Program Files\Common Files\System\ADO\msado15.dll"\
no_namespace rename("EOF", "adoEOF")
2、在MainFrm.h中
_ConnectionPtr pMyConnect;//创建ADO连接的连接接口
_RecordsetPtr pRecordset;
3、在MainFrm oncreate中:
AfxEnableControlContainer();
AfxOleInit();//初使化COM
HRESULT hr=pMyConnect.CreateInstance("ADODB.Connection");
if(FAILED(hr))
return false;
_bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;\Data Source=.\\DataBase\\BKMAN.mdb";
//"Provider=SQLOLEDB;Server=TAO;Database=Forum;uid=sa;pwd=;";
try
{
pMyConnect->Open(strConnect,"","",adModeUnknown);//打开数据库的
pRecordset.CreateInstance("ADODB.Recordset");
}
catch(_com_error &e)
{
::MessageBox(NULL,e.Description(),"警告",MB_OK|MB_ICONWARNING);
}
4、用到的页面
extern  _ConnectionPtr pMyConnect;//创建ADO连接的连接接口
extern _RecordsetPtr pRecordset;

下面写数据进库:
CString Sqlstr;
Sqlstr.Format(_T("Select * from BK_CHANKILL where Kill_Status=0"));
pRecordset->Open(_variant_t(Sqlstr),_variant_t((IDispatch *)pMyConnect,true),adOpenStatic,adLockOptimistic,adCmdText);
if(!pRecordset->adoEOF)
pRecordset->MoveFirst();

CTime time;
time = CTime::GetCurrentTime();// Get the current system time
CString str_Time;                        
str_Time= time.Format("%Y-%m-%d");// convert the time to the string format

pRecordset->PutCollect(_variant_t((long)3),_variant_t((long)1));//把1写进该行第4列,下标0开始
pRecordset->PutCollect(_variant_t((long)7),_variant_t(str_Time));
pRecordset->Update();///保存到库中
pRecordset->Close();  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值