⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 database_show.cpp

📁 匿名通信代码
💻 CPP
字号:
// database_show.cpp : implementation file
//

#include "stdafx.h"
#include "file_handle.h"
#include "database_show.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// database_show dialog


database_show::database_show(CWnd* pParent /*=NULL*/)
: CDialog(database_show::IDD, pParent)
{
	//{{AFX_DATA_INIT(database_show)
	// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void database_show::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(database_show)
	DDX_Control(pDX, IDC_LIST1, m_database_list);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(database_show, CDialog)
//{{AFX_MSG_MAP(database_show)
ON_BN_CLICKED(IDC_BUTTON1, OnDelete)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// database_show message handlers

BOOL database_show::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	DWORD dwStyle = m_database_list.GetExtendedStyle();
    dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
    dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
    dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件
    m_database_list.SetExtendedStyle(dwStyle); //设置扩展风格
	
	m_database_list.InsertColumn(0, "NO", LVCFMT_LEFT, 45 );//插入列
	m_database_list.InsertColumn(1, "SourceIP", LVCFMT_LEFT, 140 );
    m_database_list.InsertColumn(2, "DestiIP", LVCFMT_LEFT, 140 );
	m_database_list.InsertColumn(3, "SourcePort", LVCFMT_LEFT, 90);
	m_database_list.InsertColumn(4, "DestiPort", LVCFMT_LEFT, 80);
	m_database_list.InsertColumn(5, "Protocol", LVCFMT_LEFT, 70 );
    m_database_list.InsertColumn(6, "length", LVCFMT_LEFT, 60 );
	m_database_list.InsertColumn(7, "Time", LVCFMT_LEFT, 153);
	
	DBConnect();
	RefreshData();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void database_show ::DBConnect()
{
	CString strConnect;
	strConnect.Format("DSN=%s;UID=%s;PWD=%s","myData","NULL","NULL");
	try
	{
		m_db.OpenEx(strConnect,CDatabase::noOdbcDialog);
	}
	catch(CDBException ex)
	{
		AfxMessageBox(ex.m_strError);
		AfxMessageBox(ex.m_strStateNativeOrigin);
	}
	catch(CMemoryException pEx)
	{
		pEx.ReportError();
		AfxMessageBox("memory exception");
	}
	catch(CException e)
	{
		char szError[100];
		e.GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	
}

void database_show::RefreshData()
{
    if(!m_db.IsOpen())
		m_db.OpenEx("DSN=myData;UID=NULL;PWD=NULL");
	
	m_database_list.DeleteAllItems();
	
    CRecordset rs(&m_db);
	rs.Open(CRecordset::dynaset,"select * from packet_fact");
	
	int i=0;
	char buf[30];
	CDBVariant varValue;
	
	if(rs.GetRecordCount()!=0) 
		rs.MoveFirst();
	
	while(!rs.IsEOF())
	{
		int temp =0 ;
		rs.GetFieldValue(temp,varValue);
		sprintf(buf,"%d",varValue.m_iVal);
		m_database_list.InsertItem(i,buf);
		
        rs.GetFieldValue(1,varValue);
		m_database_list.SetItemText(i,1,varValue.m_pstring->GetBuffer(1));
		
        rs.GetFieldValue(2,varValue);
		m_database_list.SetItemText(i,2,varValue.m_pstring->GetBuffer(1));
		
		
        rs.GetFieldValue(3,varValue);
		sprintf(buf,"%d",varValue.m_iVal);
		m_database_list.SetItemText(i,3,buf);
		
        rs.GetFieldValue(4,varValue);
		sprintf(buf,"%d",varValue.m_iVal);
		m_database_list.SetItemText(i,4,buf);  
		
        rs.GetFieldValue(5,varValue);
		m_database_list.SetItemText(i,5,varValue.m_pstring->GetBuffer(1));
		
		
        rs.GetFieldValue(6,varValue);
		sprintf(buf,"%d",varValue.m_iVal);
		m_database_list.SetItemText(i,6,buf); 
		
		i++;
		rs.MoveNext();
	}
}

void database_show::OnDelete() 
{
	// TODO: Add your control notification handler code here
    if(!m_db.IsOpen())
		m_db.OpenEx("DSN=myData;UID=NULL;PWD=NULL");
	CRecordset rs(&m_db);
	rs.Open(CRecordset::dynaset,"select * from packet_fact");

	//CString str;
	int num[1024];
	int k = 0;
	CString strSQL;
	for(int i=0; i<m_database_list.GetItemCount(); i++)
	{
		if( m_database_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_database_list.GetCheck(i))
		{
			//str.Format("第%d行的checkbox为选中状态", i);
		    num[k++] = atoi(m_database_list.GetItemText(i,0));	
			//AfxMessageBox(str);
		}
	}

	for(int j = 0 ; j<k;j++)
	{
		strSQL.Format("delete from packet_fact where packet_id = %d",num[j]);
		m_db.ExecuteSQL(strSQL);
	}

	m_db.Close();
	RefreshData();
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -