#include "stdafx.h"
#include "Fiber.h"
#include "FiberDlg.h"
#include "afxdialogex.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();// 对话框数据
enum { IDD = IDD_ABOUTBOX }; protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现
protected:
DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
// CFiberDlg 对话框
CFiberDlg::CFiberDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CFiberDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CFiberDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CFiberDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_CANCEL, &CFiberDlg::OnBnClickedButtonCancel)
ON_BN_CLICKED(IDC_BUTTON_ADD, &CFiberDlg::OnBnClickedButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_SAVE, &CFiberDlg::OnBnClickedButtonSave) ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_FIBER, &CFiberDlg::OnLvnItemchangedListFiber)
END_MESSAGE_MAP()
// CFiberDlg 消息处理程序BOOL CFiberDlg::OnInitDialog()
{
CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
} // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码
::CoInitialize(NULL);
m_FiberList.SetExtendedStyle(m_FiberList.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_FiberList.InsertColumn(0, _T("光纤段"), LVCFMT_LEFT, 100);
m_FiberList.InsertColumn(1, _T("温度"), LVCFMT_LEFT, 120);
m_FiberList.InsertColumn(2, _T("距离"), LVCFMT_LEFT, 100);
EnableInput(FALSE);
m_bADD = FALSE;
_bstr_t strcnn(_T("Provider=Microsoft.ACE.OLEDB.12.0;Data source=Fiber.mdb"));
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open(strcnn, _T(""), _T(""), adModeUnknown);
m_pRecordset.CreateInstance(__uuidof(Recordset));
}
catch(_com_error e)
{
AfxMessageBox(_T("建立数据库失败!"), MB_OK|MB_ICONSTOP);
}
FreshList();
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}void CFiberDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。void CFiberDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CFiberDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CFiberDlg::OnBnClickedButtonAdd()
{
// TODO: 在此添加控件通知处理程序代码
m_bADD = TRUE;
EnableInput(TRUE);
}
void CFiberDlg::OnBnClickedButtonSave()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_strId.IsEmpty())
{
AfxMessageBox(_T("光纤段不能为空."));
return;
}
if(m_strData.IsEmpty())
{
AfxMessageBox(_T("温度不能为空."));
return;
}
CString strSql;
strSql.Format(_T("Insert into TTempData values('%s','%s',%s)"), m_strId, m_strData, m_strXscale);
try
{
m_pConnection->Execute(_bstr_t(strSql), 0, adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(_T("增加记录失败!"));
}
AfxMessageBox(_T("增加记录成功!"));
FreshList(); m_bADD = FALSE;
EnableInput(FALSE);
}
void CFiberDlg::OnBnClickedButtonCancel()
{
// TODO: 在此添加控件通知处理程序代码
m_bADD = FALSE;
EnableInput(FALSE);
}
void CFiberDlg::EnableInput(BOOL bEnable)
{
CEdit *pEdit;
CButton *pButton; pEdit = (CEdit*)GetDlgItem(IDC_EDIT_ID);
pEdit->SetReadOnly(bEnable);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_DATA);
pEdit->SetReadOnly(!bEnable);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_XSCALE);
pEdit->SetReadOnly(!bEnable);
pButton =(CButton*)GetDlgItem(IDC_BUTTON_ADD);
pButton->EnableWindow(!bEnable); pButton =(CButton*)GetDlgItem(IDC_BUTTON_SAVE);
pButton->EnableWindow(bEnable); pButton =(CButton*)GetDlgItem(IDC_BUTTON_CANCEL);
pButton->EnableWindow(bEnable);
}void CFiberDlg::FreshList()
{
try
{
m_pRecordset->Open(_T("SELECT * FORM TTempData"), (IDispatch*)m_pConnection,\
adOpenDynamic,adLockOptimistic,adCmdText);
int nItem;
m_FiberList.DeleteAllItems();
while(!m_pRecordset->adoEOF)
{
nItem = m_FiberList.GetItemCount();
CString str;
str=(LPCTSTR)_bstr_t(m_pRecordset->GetCollect("ID"));
m_FiberList.InsertItem(nItem, str);
str=(LPCTSTR)_bstr_t(m_pRecordset->GetCollect("Data"));
m_FiberList.SetItemText(nItem, 1, str);
str=(LPCTSTR)_bstr_t(m_pRecordset->GetCollect("Xscale"));
m_FiberList.SetItemText(nItem, 2, str);
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}
catch(_com_error e)
{
AfxMessageBox(_T("刷新列表失败!"));
}
}void CFiberDlg::OnLbnSelchangeListFiber()
{ // TODO: 在此添加控件通知处理程序代码
int nItem = m_FiberList.GetSelectionMark();
if(nItem == -1) return;
m_strId = m_FiberList.GetItemText(nItem, 0);
m_strData = m_FiberList.GetItemText(nItem, 1);
m_strXscale = m_FiberList.GetItemText(nItem, 2);
UpdateData(FALSE);
}void CFiberDlg::OnLvnItemchangedListFiber(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}
#include "Fiber.h"
#include "FiberDlg.h"
#include "afxdialogex.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();// 对话框数据
enum { IDD = IDD_ABOUTBOX }; protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现
protected:
DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
// CFiberDlg 对话框
CFiberDlg::CFiberDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CFiberDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CFiberDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CFiberDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_CANCEL, &CFiberDlg::OnBnClickedButtonCancel)
ON_BN_CLICKED(IDC_BUTTON_ADD, &CFiberDlg::OnBnClickedButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_SAVE, &CFiberDlg::OnBnClickedButtonSave) ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_FIBER, &CFiberDlg::OnLvnItemchangedListFiber)
END_MESSAGE_MAP()
// CFiberDlg 消息处理程序BOOL CFiberDlg::OnInitDialog()
{
CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
} // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码
::CoInitialize(NULL);
m_FiberList.SetExtendedStyle(m_FiberList.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_FiberList.InsertColumn(0, _T("光纤段"), LVCFMT_LEFT, 100);
m_FiberList.InsertColumn(1, _T("温度"), LVCFMT_LEFT, 120);
m_FiberList.InsertColumn(2, _T("距离"), LVCFMT_LEFT, 100);
EnableInput(FALSE);
m_bADD = FALSE;
_bstr_t strcnn(_T("Provider=Microsoft.ACE.OLEDB.12.0;Data source=Fiber.mdb"));
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open(strcnn, _T(""), _T(""), adModeUnknown);
m_pRecordset.CreateInstance(__uuidof(Recordset));
}
catch(_com_error e)
{
AfxMessageBox(_T("建立数据库失败!"), MB_OK|MB_ICONSTOP);
}
FreshList();
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}void CFiberDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。void CFiberDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CFiberDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CFiberDlg::OnBnClickedButtonAdd()
{
// TODO: 在此添加控件通知处理程序代码
m_bADD = TRUE;
EnableInput(TRUE);
}
void CFiberDlg::OnBnClickedButtonSave()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_strId.IsEmpty())
{
AfxMessageBox(_T("光纤段不能为空."));
return;
}
if(m_strData.IsEmpty())
{
AfxMessageBox(_T("温度不能为空."));
return;
}
CString strSql;
strSql.Format(_T("Insert into TTempData values('%s','%s',%s)"), m_strId, m_strData, m_strXscale);
try
{
m_pConnection->Execute(_bstr_t(strSql), 0, adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(_T("增加记录失败!"));
}
AfxMessageBox(_T("增加记录成功!"));
FreshList(); m_bADD = FALSE;
EnableInput(FALSE);
}
void CFiberDlg::OnBnClickedButtonCancel()
{
// TODO: 在此添加控件通知处理程序代码
m_bADD = FALSE;
EnableInput(FALSE);
}
void CFiberDlg::EnableInput(BOOL bEnable)
{
CEdit *pEdit;
CButton *pButton; pEdit = (CEdit*)GetDlgItem(IDC_EDIT_ID);
pEdit->SetReadOnly(bEnable);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_DATA);
pEdit->SetReadOnly(!bEnable);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_XSCALE);
pEdit->SetReadOnly(!bEnable);
pButton =(CButton*)GetDlgItem(IDC_BUTTON_ADD);
pButton->EnableWindow(!bEnable); pButton =(CButton*)GetDlgItem(IDC_BUTTON_SAVE);
pButton->EnableWindow(bEnable); pButton =(CButton*)GetDlgItem(IDC_BUTTON_CANCEL);
pButton->EnableWindow(bEnable);
}void CFiberDlg::FreshList()
{
try
{
m_pRecordset->Open(_T("SELECT * FORM TTempData"), (IDispatch*)m_pConnection,\
adOpenDynamic,adLockOptimistic,adCmdText);
int nItem;
m_FiberList.DeleteAllItems();
while(!m_pRecordset->adoEOF)
{
nItem = m_FiberList.GetItemCount();
CString str;
str=(LPCTSTR)_bstr_t(m_pRecordset->GetCollect("ID"));
m_FiberList.InsertItem(nItem, str);
str=(LPCTSTR)_bstr_t(m_pRecordset->GetCollect("Data"));
m_FiberList.SetItemText(nItem, 1, str);
str=(LPCTSTR)_bstr_t(m_pRecordset->GetCollect("Xscale"));
m_FiberList.SetItemText(nItem, 2, str);
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}
catch(_com_error e)
{
AfxMessageBox(_T("刷新列表失败!"));
}
}void CFiberDlg::OnLbnSelchangeListFiber()
{ // TODO: 在此添加控件通知处理程序代码
int nItem = m_FiberList.GetSelectionMark();
if(nItem == -1) return;
m_strId = m_FiberList.GetItemText(nItem, 0);
m_strData = m_FiberList.GetItemText(nItem, 1);
m_strXscale = m_FiberList.GetItemText(nItem, 2);
UpdateData(FALSE);
}void CFiberDlg::OnLvnItemchangedListFiber(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}
解决方案 »
- USB当做COM接收数据问题
- 微软的office软件是一堆com组件组成的,这个说法对吗
- 怎么获取绑定的socket的地址的端口号
- 一个关于List Box的问题,求救~~
- 文件复制的问题!!
- 这个函数WNetAddConnection2()哪个地方用错了。代码贴上。请进!
- 请问如何实现像UltraEdit一样在当前编辑的行显示一条黄色的带
- 为什么用gethostbyname在联网状态下得不到正确的ip?
- 有关自动化组件无法释放的问题
- CxImage在读取分辨率高的图片时,LOAD失败,高分处理,在线等待。
- 请问我工程是UNICODE的,现在想用一个库但是只有ANSI版本的,能否共存?
- MFC菜鸟学习贴,请教CView一个函数的意义
这句是不是少个'',就是第三个%s,是不是应该是这样:
strSql.Format(_T("Insert into TTempData values('%s','%s','%s')"), m_strId, m_strData, m_strXscale);
这样的风格不好,特别是你的数据库表如果发生变动,你的代码修改难度很大,且易出错. 而且只看见你Insert数据表没Update数据表.
lz,你好歹也写出你想要的结果是什么吧?
我想把数据库里的数据读出来并显示在ListCtrl控件里边,只是总是出现“数据刷新失败!”而无法把数据库里的内容显示出来
strSql.Format(_T("Insert into TTempData values('%s','%s',%s)"), m_strId, m_strData, m_strXscale);
这样的风格不好,特别是你的数据库表如果发生变动,你的代码修改难度很大,且易出错. 而且只看见你Insert数据表没Update数据表.
谢谢啊,如果这种风格不好的话要用哪一个会好些呢,嗯,我出现的问题就是 刷新列表失败 也就是因此而不能把数据表的数据读出来的
你这句的代码是OFFICE2010的数据库,你计算机上装的OFFICE是不是OFFICE2010,如果不是OFFICE2010就不对了,按你说的提示信息,是数据库打开失败,也就是在:
m_pRecordset->Open(_T("SELECT * FORM TTempData"), (IDispatch*)m_pConnection,\
adOpenDynamic,adLockOptimistic,adCmdText);这句出错,否则不能出"数据刷新失败!"的提示,也就是不能进入:
catch(_com_error e)
{
AfxMessageBox(_T("刷新列表失败!"));
}
这里,你单步执行,看看是不是open这句出错才进的catch里
我的OFFICE是OFFICE2007的我把_bstr_t strcnn(_T("Provider=Microsoft.ACE.OLEDB.12.0;Data source=Fiber.mdb"));这句代码改为_bstr_t strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source=Fiber.mdb"));结果也还是一样的。我出错的是刷新列表失败,数据库读取上是可以的。如果是m_pRecordset->Open(_T("SELECT * FORM TTempData"), (IDispatch*)m_pConnection,\
adOpenDynamic,adLockOptimistic,adCmdText);这句代码出错的话,该如何改呢,请赐教,谢谢
AfxOleInit();//其实::CoInitialize(NULL);这句就行了,但你还是把AfxOleInit();加上试试
我给你段代码,是好使的:
try
{
m_pConnection=NULL;
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
m_pConnection->ConnectionTimeout = 10;
hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\bagayalu.accdb","", "", adModeUnknown);
// hr = m_pConnection->Open( "Provider=Microsoft.Ace.Oledb.12.0;Data Source=D:\\bagayalu.accdb;Jet OLEDB:Database Password=BayAlu良心大大的坏了的","", "", adModeUnknown);
hr =m_pConnection->Open( (_bstr_t)str,"", "", adModeUnknown);
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->CommandTimeout = 5;
m_pCommand->ActiveConnection = m_pConnection;
}
else
{
AfxMessageBox("打开数据库失败");
Result=FALSE;
return Result;
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());
// AfxMessageBox(errormessage);///显示错误信息
Result=FALSE;
return Result;
}
_variant_t var;
float v1,v2,v3,v4;
CString Re;
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pRecordset->Open("SELECT * FROM data1",// 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("v1");
if(var.vt != VT_NULL)
v1=var.fltVal;
// strName = (LPCSTR)_bstr_t(var); var = m_pRecordset->GetCollect("v2");
if(var.vt != VT_NULL)
v2=var.fltVal;
var = m_pRecordset->GetCollect("v3");
if(var.vt != VT_NULL)
v3=var.fltVal;
var = m_pRecordset->GetCollect("v4");
if(var.vt != VT_NULL)
v4=var.fltVal;
var = m_pRecordset->GetCollect("re");
if(var.vt != VT_NULL)
Re = (LPCSTR)_bstr_t(var);
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
Result=FALSE;
return Result;
// AfxMessageBox(e->ErrorMessage());
}
在头文件里定义:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
_CommandPtr m_pCommand;
数据库是D:\\bagayalu.mdb,上面的是OFFICE2010版本的
我试过了可还是会出错,要不你给我下你的邮箱我吧我的整个程序代码及数据库一同给你发过去,你帮我看看行吧,我非常想知道结果的,谢谢
我前天就已经把代码和数据库发你邮箱了,帮忙看一下吧,因为是毕业论文,比较急,非常非常感谢!!