Poradite prosim, kde je problem?
Pripojuju se k MS SQL server 2005 express edition a chci od tam cist tabulku. Vypisuje mi to toto:
Error:
Code = 80040e21
Code meaning = IDispatch error #3105
Source = Microsoft OLE DB Service Components
Description = Operace služby OLE DB s více kroky vedla k vytvoření chyb. Zkontro
lujte všechny hodnoty stavů služby OLE DB, jsou-li k dispozici. Nebyla provedena
žádná akce.
Error:
Code = 80004003
Code meaning = Neplatný ukazatel
Source = (null)
Description = (null)
Pokračujte stisknutím libovolné klávesy...
myslim, za problem je v connection stringu, ale netusim
poradte prosim co stim, moc by mi to pomohlo dik moc.
zdrojak test.cpp:
#include <iostream>
#include "Database.h"
char CnnStr[200]="data source=PLANTAKOMP\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|pokus1.mdf;User Instance=true";
char ErrStr[200];
using namespace std;
int main()
{
::CoInitialize(NULL);
Database db;
Table tbl;
if(!db.Open("sa","etarak",CnnStr))
{
db.GetErrorErrStr(ErrStr);
cout<<ErrStr<<"\n";
}
if(!db.Execute("select * from MEASRES",tbl))
{
db.GetErrorErrStr(ErrStr);
cout<<ErrStr<<"\n";
}
/*if(!db.OpenTbl(ADODB::adCmdText,"select * from authors order by au_fname,au_id",tbl))
{
db.GetErrorErrStr(ErrStr);
cout<<ErrStr<<"\n";
}*/
char id[100];
if(!tbl.ISEOF())
tbl.MoveFirst();
while(!tbl.ISEOF())
{
if(tbl.Get("au_id",id))
cout<<"\nid:"<<id;
else
{
tbl.GetErrorErrStr(ErrStr);
cout<<"\n"<<ErrStr<<"\n";
break;
}
if(tbl.Get("au_fname",id))
cout<<" fname:"<<id;
else
{
tbl.GetErrorErrStr(ErrStr);
cout<<"\n"<<ErrStr<<"\n";
break;
}
tbl.MoveNext();
}
::CoUninitialize();
system("PAUSE");
return 0;
}
Příspěvky odeslané z IP adresy 89.102.1.–
To Jura : Povedlo se me rozchodit jeden ze skriptu na codeguru. (konkretne http://www.codeguru.com/cpp/data/mfc_database/ado/article.php/c6729__1/), nejsem si, ale jist jak by u mne mel vypadat connection string. Pripojuji se na MS SQL server 2005 express edition.
zdrojový kód:
#include <iostream>
#include "Database.h"
char CnnStr[200]="Provider=PLANTAKOMP\SQLEXPRESS;Persist Security Info=False;"\
"User ID=sy;Initial Catalog=pubs;Data "\
"Source=PRASUN@CSE" ;
//Mel bych cely tento char nahradit nejakym z www.connectionstrings.com pro MS SQL 2005 EE?
char ErrStr[200];
using namespace std;
int main()
{
::CoInitialize(NULL);
Database db;
Table tbl;
if(!db.Open("sy","cse-98",CnnStr)) //Tady si nejsem jist co by melo byt parametry funkce Open-zvlaste to cse-98
{
db.GetErrorErrStr(ErrStr);
cout<<ErrStr<<"\n";
}
if(!db.Execute("select * from authors order by au_fname,au_id",tbl))
{
db.GetErrorErrStr(ErrStr);
cout<<ErrStr<<"\n";
}
/*if(!db.OpenTbl(ADODB::adCmdText,"select * from authors order by au_fname,au_id",tbl))
{
db.GetErrorErrStr(ErrStr);
cout<<ErrStr<<"\n";
}*/
char id[100];
if(!tbl.ISEOF())
tbl.MoveFirst();
while(!tbl.ISEOF())
{
if(tbl.Get("au_id",id))
cout<<"\nid:"<<id;
else
{
tbl.GetErrorErrStr(ErrStr);
cout<<"\n"<<ErrStr<<"\n";
break;
}
if(tbl.Get("au_fname",id))
cout<<" fname:"<<id;
else
{
tbl.GetErrorErrStr(ErrStr);
cout<<"\n"<<ErrStr<<"\n";
break;
}
tbl.MoveNext();
}
::CoUninitialize();
system("PAUSE");
return 0;
}
------------------------
Dekuji za odpoved
Super dik moc, kdybys to nasel bylo by to vyborny! Akorat nepocita se v tom prikladu na codesource s tim ze mam MFC knihovny? Ty totiz pry v express edition pristupny nejsou..
Budu to delat asi v VC++ 2008 EE, a potreboval bych se vzdycky jenom pripojit k tomu mdf souboru pridat zaznamy a skoncit. Je to hodne slozite? Da se to delat v express edition bez MFC knihoven?
Diky
Pomohl by mi nekdo prosim s mym problemem pripojeni k databazi? Potreboval bych popsat krok po kroku jak se pres c++ pripojit k db MS SQL SERVER 7.0, pridat zaznam, a ukoncit spojeni. Docetl jsem sem se, ze nejvyhodnejsi bude pravdepodobne vyuzit ODBC. Bohuzel jsem ale nikde nenasel uceleny navod a nejsem schopen to rozjet.
Pomohl by urcite i nejaky kvalitni odkaz, kde by to bylo dobre rozvedeno - klidne i anglicky.
Mnohokrat dekuju za pomoc.
P.S.:to ODBC budu muset pravdepodbne naistalovat, MS SQL 7.0 ho neobsahuje ze?