怎样将数据库中数据表显示在MFC中的列表控件上,并对其进行删除,修改

怎样将数据库中数据表显示在MFC中的列表控件上,并对其进行删除,修改,第1张

列表显示只是一个表象,二者没有设定好的关联。实际的删除 *** 作应该在数据库中进行,也就是执行删除工作后,你得把列表数据刷新一下,重新显示。

具体的函数实现,如果需要我再贴上来。

void CMCTTView::ListItem()//刷新列表

{

int i = 0;

if(!m_pSet->IsOpen())

AfxMessageBox("数据源未打开");

m_ItemSetExtendedStyle(m_ItemGetExtendedStyle()|LVS_EX_FULLROWSELECT);

m_ItemDeleteAllItems();

m_ItemSetRedraw(FALSE);

if (!m_pSet->GetRecordCount() == 0)

{

m_pSet->MoveFirst();

}

while(!m_pSet->IsEOF())

{

m_ItemInsertItem(i,"");

m_ItemSetItemText(i,0,m_pSet->m_column1);

m_ItemSetItemText(i,1,m_pSet->m_column2);

m_ItemSetItemText(i,2,m_pSet->m_column3);

m_ItemSetItemText(i,3,m_pSet->m_column4);

i+=1;

m_pSet->MoveNext();

}

m_ItemSetRedraw(TRUE);

}

void CMCTTView::OnItemDel() //在view类中删除条目

{

// TODO: Add your control notification handler code here

int listIndex; //当前选中项的索引

//首先得到点击的位置

POSITION pos=m_ItemGetFirstSelectedItemPosition(); //0 based m_item是指代列表控件

if(pos==NULL)

return;

//得索引,通过POSITION转化

listIndex=m_ItemGetNextSelectedItem(pos)+1; //1 based,so 1 added

m_pSet->SetAbsolutePosition(listIndex);

if ( MessageBox( _T( "你确定要删除当前单词信息吗" ),

_T( "删除确认" ), MB_OKCANCEL | MB_ICONQUESTION ) == IDOK )

{

m_pSet->Delete();

MessageBox( _T( "该单词信息已经被成功删除!" ),

_T( "删除成功!" ), MB_OK | MB_ICONASTERISK );

OnNext();

}

m_pSet->Requery();

//if(!m_pSet->GetRecordCount() == 0)

ListItem();

}

void CMCTTView::OnNext()

{

m_pSet->MoveNext();

if ( m_pSet->IsEOF() )

m_pSet->MoveFirst();

}

int CMCTTDoc::AddToAcc()//在doc类中添加数据

{

m_mCTTSetAddNew();

CString str1,str2,str3,str4;

str1Format("%s",m_Index);

str2Format("%f",m_UseHs);

str3Format("%f",m_UseHj);

switch (m_HJStyle)

{

case 0:

str4 = CString("类型1");

break;

case 1:

str4 = CString("类型2");

break;

case 2:

str4 = CString("类型3");

break;

}

m_mCTTSetm_column1 = str1; //Index

m_mCTTSetm_column2 = str2; //the use of hansi

m_mCTTSetm_column3 = str3; //the use of hanji

m_mCTTSetm_column4 = str4; //the style of hanjie

m_mCTTSetUpdate();

m_mCTTSetRequery();

MessageBeep(MB_OK);

CMainFrame pframe = (CMainFrame)AfxGetMainWnd();

CMCTTView pInterfaceView = (CMCTTView)pframe->GetActiveView();

pInterfaceView->ListItem();

return 0;

}

比如你的表为user

你可以先创建一个类User,把数据库中的数据放入User对象中

再用集合存放每个User对象,如:

public ArrayList findAllUsers(){

ArrayList al=new ArrayList();

//循环查询数据库

while(){

String name=;//从数据库中查出

User user=new User();

username=name;

以此类推

aladd(user);

}

return al;

}

分两步进行:

第一步,复制表结构:

在表上面右击——>编写表脚本为:——>Create到——>新查询编辑器窗口,你也可以保存为sql文件,将新查询编辑器窗口最上面的一句话USE [olddatabase]中的“olddatabase”修改为“newdatabase”,其中olddatabase为源数据库名,newdatabase为目标数据库名,点击上面的“执行”按钮,这样,表结构复制完毕;

第二步,复制表数据:

在“olddatabase”上右击——>任务——>导出数据,在d出对话框中选好源数据库、身份验证和目标数据库、身份验证后,然后选择要复制的表,完成后则表数据即插入成功。

创建出你需要的属性比如在我的项目中我需要用到的:有当前的页码currentPage

当前的页显示的数量currentCount

你从数据库中查询得到的所有数据总和totalCount(这个你需要在dao层定义方法实现并把得到的数据返回给service层)

一共需要分多少页totalPage(这个需要你去计算通过查询所有的数据总和/currentCount,还用到了mathceil()方法)

最后生成setter和getter方法

SELECT

表名=CASE WHEN Ccolumn_id=1 THEN Oname ELSE N'' END,

表说明=ISNULL(CASE WHEN Ccolumn_id=1 THEN PTB[value] END,N''),

字段序号=Ccolumn_id,

字段名=Cname,

主键=ISNULL(IDXPrimaryKey,N''),

标识=CASE WHEN Cis_identity=1 THEN N'√'ELSE N'' END,

计算列=CASE WHEN Cis_computed=1 THEN N'√'ELSE N'' END,

类型=Tname,

长度=Cmax_length,

精度=Cprecision,

小数位数=Cscale,

允许空=CASE WHEN Cis_nullable=1 THEN N'√'ELSE N'' END,

默认值=ISNULL(Ddefinition,N''),

字段说明=ISNULL(PFD[value],N''),

索引名=ISNULL(IDXIndexName,N''),

索引排序=ISNULL(IDXSort,N''),

创建时间=OCreate_Date,

修改时间=OModify_date

FROM syscolumns C

INNER JOIN sysobjects O

ON C[object_id]=O[object_id]

AND Otype='U'

AND Ois_ms_shipped=0

INNER JOIN systypes T

ON Cuser_type_id=Tuser_type_id

LEFT JOIN sysdefault_constraints D

ON C[object_id]=Dparent_object_id

AND Ccolumn_id=Dparent_column_id

AND Cdefault_object_id=D[object_id]

LEFT JOIN sysextended_properties PFD

ON PFDclass=1

AND C[object_id]=PFDmajor_id

AND Ccolumn_id=PFDminor_id

-- AND PFDname='Caption' -- 字段说明对应的描述名称(一个字段可以添加多个不同name的描述)

LEFT JOIN sysextended_properties PTB

ON PTBclass=1

AND PTBminor_id=0

AND C[object_id]=PTBmajor_id

-- AND PFDname='Caption' -- 表说明对应的描述名称(一个表可以添加多个不同name的描述)

LEFT JOIN -- 索引及主键信息

(

SELECT

IDXC[object_id],

IDXCcolumn_id,

Sort=CASE INDEXKEY_PROPERTY(IDXC[object_id],IDXCindex_id,IDXCindex_column_id,'IsDescending')

WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,

PrimaryKey=CASE WHEN IDXis_primary_key=1 THEN N'√'ELSE N'' END,

IndexName=IDXName

FROM sysindexes IDX

INNER JOIN sysindex_columns IDXC

ON IDX[object_id]=IDXC[object_id]

AND IDXindex_id=IDXCindex_id

LEFT JOIN syskey_constraints KC

ON IDX[object_id]=KC[parent_object_id]

AND IDXindex_id=KCunique_index_id

INNER JOIN -- 对于一个列包含多个索引的情况,只显示第1个索引信息

(

SELECT [object_id], Column_id, index_id=MIN(index_id)

FROM sysindex_columns

GROUP BY [object_id], Column_id

) IDXCUQ

ON IDXC[object_id]=IDXCUQ[object_id]

AND IDXCColumn_id=IDXCUQColumn_id

AND IDXCindex_id=IDXCUQindex_id

) IDX

ON C[object_id]=IDX[object_id]

AND Ccolumn_id=IDXcolumn_id

WHERE Oname like '%name%'

-- 如果只查询指定表,加上此条件

ORDER BY Oname,Ccolumn_id

1、打开企业管理器,打开要导入数据的数据库,在表上按右键,所有任务--导入数据,d出DTS导入/导出向导,按下一步

2、选择数据源MicrosoftExcel97-2000,文件名选择要导入的xls文件,按下一步

3、选择目的用于SQLServer的MicrosoftOLEDB提供程序,服务器选择本地(如果是本地数据库的话,如VVV),使用SQLServer身份验证,用户名sa,密码为空,数据库选择要导入数据的数据库(如client),按下一步

4、选择用一条查询指定要传输的数据,按下一步

5、按查询生成器,在源表列表中,有要导入的xls文件的列,将各列加入到右边的选中的列列表中,这一步一定要注意,加入列的顺序一定要与数据库中字段定义的顺序相同,否则将会出错,按下一步

6、选择要对数据进行排列的顺序,在这一步中选择的列就是在查询语句中orderby后面所跟的列,按下一步

7、如果要全部导入,则选择全部行,按下一步

8、则会看到根据前面的 *** 作生成的查询语句,确认无误后,按下一步

9、会看到表/工作表/Excel命名区域列表,在目的列,选择要导入数据的那个表,按下一步

10、选择立即运行,按下一步,11、会看到整个 *** 作的摘要,按完成即可。

分为两种情况,一种是目标表不存在,另一种是目标表已存在,语法是不同的。

分别以sqlserver和oracle为例,两者略有不同。

sqlserver中,如果目标表不存在:

select into 新表名 from 旧表名;sqlserver中,如果目标表已存在:

insert into 新表名 select from 旧表名;oracle中,如果目标表不存在:

create table 新表名 as select from 旧表名;oracle中,如果目标表已存在(方法同sqlserver):

insert into 新表名 select from 旧表名;

以上就是关于怎样将数据库中数据表显示在MFC中的列表控件上,并对其进行删除,修改全部的内容,包括:怎样将数据库中数据表显示在MFC中的列表控件上,并对其进行删除,修改、如何把数据表中的数据放在一个集合里面、sql server怎样把一个数据库中的表移动到另一个数据库中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10177150.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存