关于连接Sqlserver
try
{
m_spConnection.CreateInstance( __uuidof(Connection) );
/* m_spConnection->Open(
_T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Demo.accdb"),
_T(""),
_T(""),
adModeUnknown );*/
m_spConnection->Open
(_T("driver={SQL Server};Server=127.0.0.1;DATABASE=;UID=sa;PWD=123"),"","",/*0*/adConnectUnspecified);
}
红色部分是原来的连接代码,绿色的是我改后的,
程序运行后(用绿色的)库中的记录都可显示,但添加记录时会出现Idispatch error #3092错误,但用原来的连接方式确不会出错,下面是添加记录代码
CString strName;
m_editName.GetWindowText( strName );
if( strName.IsEmpty() || strName.GetLength() >= 50 )
{
MessageBox(_T("姓名不可以为空或者姓名太长!") );
return;
}
CString strAge;
m_editAge.GetWindowText( strAge );
if( strAge.IsEmpty() )
{
MessageBox( _T("年龄不可为空") );
return;
}
int iAge = _tstoi( (LPCTSTR)strAge );
if( iAge<0 || iAge > 150 )
{
MessageBox( _T("年龄输入不合法:太大或太小") );
return;
}
// 添加到数据库中去
CString strCmd;
strCmd.Format( _T("insert into demo values( \"%s\", %d )"),
strName,
iAge );
_CommandPtr spCmd;
spCmd.CreateInstance( __uuidof(Command) );
spCmd->ActiveConnection = this->m_spConnection;
spCmd->CommandText = (LPCTSTR)strCmd;
try
{
spCmd->Execute( NULL, NULL, adCmdText );
}
catch( _com_error& e )
{
MessageBox( e.ErrorMessage() );
return;
}
谁明白给指出错误的地方