void CNewprojectDlg::OnOK()
{
// TODO: Add extra validation here
CoInitialize(NULL);
_ConnectionPtr pConn(_uuidof(Connection));
_RecordsetPtr pRst(_uuidof(Recordset)); pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=operator";
pConn->Open("","","",adConnectUnspecified);
CString loginstr,m_username,m_password,str;//输入数据字符,输入的用户名,密码,和sql语
CNewprojectApp* addapp=(CNewprojectApp*)AfxGetApp(); //登陆数值传入app全局变量
addapp->allusername=m_username; GetDlgItemText(IDC_EDIT1,m_username);
GetDlgItemText(IDC_EDIT2,m_password);
loginstr.Format("%s","登陆系统"); //输入数据库的登路字符 str="SELECT*FROM operator WHERE username='"+m_username+"'and password='"+m_password+"'";
pRst=pConn->Execute((_bstr_t)str,NULL,adCmdText);
if(pRst->rsEOF) //是否查询到最后是否有数据
{ MessageBox("密码错误,重新输入");
}
else
{
CDialog::OnOK();
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
CoInitialize(NULL);
pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=log2";
pConn->Open("","","",adConnectUnspecified);
char a[200];
sprintf(a,"insert into log values ('%s','%s','%s')",alltime,loginstr,m_username);
pConn->Execute((_bstr_t)a,NULL,adCmdText);
pConn->Close();
//pRst.Release();
pConn.Release();
CoUninitialize(); CMainWindow mainwindow;
mainwindow.DoModal(); //创建主窗口对话框
}
我解释下..我在onok里面
首先初始化com连接数据库查询名字密码..如果不成功则messagebox通知,如果成功
则关闭对话矿..并且向数据库插入数据...
这里问题出来了...如果把数据库插入数据这段去除..那么程序可以正常运行
如果把数据库插入数据这段代码加上.程序就不可仪运行..这里是不是com初始化的问题...
谢谢大家了!~我很急~~~~~我喜欢对一次操作数据库就初始化一次com然后释放....CoInitialize(NULL),CoUninitialize();
是不是这里出错了??谢谢大家~~~
{
// TODO: Add extra validation here
CoInitialize(NULL);
_ConnectionPtr pConn(_uuidof(Connection));
_RecordsetPtr pRst(_uuidof(Recordset)); pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=operator";
pConn->Open("","","",adConnectUnspecified);
CString loginstr,m_username,m_password,str;//输入数据字符,输入的用户名,密码,和sql语
CNewprojectApp* addapp=(CNewprojectApp*)AfxGetApp(); //登陆数值传入app全局变量
addapp->allusername=m_username; GetDlgItemText(IDC_EDIT1,m_username);
GetDlgItemText(IDC_EDIT2,m_password);
loginstr.Format("%s","登陆系统"); //输入数据库的登路字符 str="SELECT*FROM operator WHERE username='"+m_username+"'and password='"+m_password+"'";
pRst=pConn->Execute((_bstr_t)str,NULL,adCmdText);
if(pRst->rsEOF) //是否查询到最后是否有数据
{ MessageBox("密码错误,重新输入");
}
else
{
CDialog::OnOK();
pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
CoInitialize(NULL);
pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=log2";
pConn->Open("","","",adConnectUnspecified);
char a[200];
sprintf(a,"insert into log values ('%s','%s','%s')",alltime,loginstr,m_username);
pConn->Execute((_bstr_t)a,NULL,adCmdText);
pConn->Close();
//pRst.Release();
pConn.Release();
CoUninitialize(); CMainWindow mainwindow;
mainwindow.DoModal(); //创建主窗口对话框
}
我解释下..我在onok里面
首先初始化com连接数据库查询名字密码..如果不成功则messagebox通知,如果成功
则关闭对话矿..并且向数据库插入数据...
这里问题出来了...如果把数据库插入数据这段去除..那么程序可以正常运行
如果把数据库插入数据这段代码加上.程序就不可仪运行..这里是不是com初始化的问题...
谢谢大家了!~我很急~~~~~我喜欢对一次操作数据库就初始化一次com然后释放....CoInitialize(NULL),CoUninitialize();
是不是这里出错了??谢谢大家~~~
解决方案 »
- 创建的CComboBoxEx,设置CImageList后,CEdit里不显示图像?
- 如何让程序早于系统登录界面启动
- DeviceIoControl超时的2个问题
- 关于win32的加再载位图问题
- 如何把CString类型的数据作为参数传递到MFC线程中
- 各位大侠,谁对计算网速熟悉给我一点提示(我用UDP传输的数据,可是我不知道如何计算实时的网速)
- ADO,VC编程中的问题,谢了
- 如何把一个字符串转换成一个标识?
- 在编写接收邮件程序时如何保存附件
- VC中调用MATLABCOM接口的问题
- DLL中创建WEBBROWSE2时,AfxGetInstanceHandle返回空
- 我的字窗口PUSHBUTTON 怎么不能显示啊?好人帮帮我啊~
说明我连接的时候出现问题了。.但是我检查了数据库语言是没有错的。..
那我究竟错在哪里了~~~
数据库关了又开
把CDialog::OnOK();放到最后
是执行到pConn->Execute((_bstr_t)a,NULL,adCmdText); 这里不行的...
不知道出什么毛病了。..
我用sql查询语言尝试了下可以...
我另外键立了个工程...运行了下
CoInitialize(NULL);
pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=log2";
pConn->Open("","","",adConnectUnspecified);
char a[200];
sprintf(a,"insert into log values ('%s','%s','%s')",alltime,loginstr,m_username);
pConn->Execute((_bstr_t)a,NULL,adCmdText);
pConn->Close();
//pRst.Release();
pConn.Release();
CoUninitialize();
可以执行.....我很奇怪啊..我郁闷了.......
数据库执行是不是不能在一个函数里面执行两次??
你在后面的代码中下一个断,看程序在哪行代码中出错,再看当时设置的变量值,从而分析出出错原因.
从你的代码来看:一是原来打开的数据关闭是否成功,二是设置的变量是否有正常的格式和值;三是SQL语句有无错误
1.你的log表是否只有三个字段
2.你的log表的三个字段是否都是varchar
3.用VC IDE调试一看系统的出错信息是什么