[odb-users] Re: about use libodb-oracle
Scott Zhang
macromarship at gmail.com
Wed Sep 26 05:44:23 EDT 2012
Looks odb-oracle generated sql has some effect. When I import the sql and
run odb oracle with it. the id is generated successfully.
On Wed, Sep 26, 2012 at 3:45 PM, Scott Zhang <macromarship at gmail.com> wrote:
> hello.
> I am using odb-oracle in my c++ code.
> Basically I have a member table in my db, I added this table manually,
> which has following fields. ID is autoincrement field.primary key
> "
> IDNUMBER(38,0)No - 1 USER_IDVARCHAR2(20)Yes - - FULLNAMEVARCHAR2(50)Yes - -
> PASSWORDVARCHAR2(100)Yes - - EMAILVARCHAR2(50)Yes - - BIRTHDAYDATEYes - -
> ADDRESSVARCHAR2(500)Yes - - GENDERVARCHAR2(1)Yes - - PHONEVARCHAR2(20)Yes- -
> REG_DATETIMEDATEYes - - LAST_ACTIVITY_DATETIMEDATEYes - "
> Most of them are operated by php code. In my c++ code, I only need to
> check USER_ID and PASSWORD, and may update the password field. So I create
> a member class
> #pragma db object
> class MEMBER
> {
> public:
> friend class odb::access;
> MEMBER() {}
> #pragma db id auto
> unsigned long ID_;
> std::string USER_ID_;
> std::string PASSWORD_;
>
> };
>
> I tried to save a record into database and it works. But the data inserted
> doesn't looks correct.
>
> 1 marship Scott Zhang c81e728d9d4c2f636f067f89cc14862c
> macromarship at gmail.com 09/18/2012 xi'an m 13679178184
> 09/18/2012 09/18/2012
> Edit 2 test - test - - - - - - -
> Edit 6349320 test - test - - - - - -
> -
> Edit 6348160 test - test
>
> First 2 rows are inserted into by PHP code, whose ID are correct.
> Then 3rd and 4th rows are insert by odb code. I don't know why ID looks so
> big and not continuous. And the insert code only works for first time, when
> I run same program for second time, the insert failed with exception
> "
> terminate called after throwing an instance of
> 'odb::object_already_persistent'
> what(): object already persistent
> Aborted
> "
>
> Here is the code of my main function:
> std::auto_ptr<odb::database> db(new
> odb::oracle::database("****","****","localhost:1521/XE",0));
> MEMBER m;
> m.USER_ID_ = "test12";
> m.PASSWORD_ = "test12";
> MEMBER m1;
> m1.USER_ID_ = "test13";
> m1.PASSWORD_ = "test13";
> transaction t(db->begin());
> db->persist(m);
> db->persist(m1);
> t.commit();
>
>
> Can anyone help explain this?
>
>
> Thanks.
> Regards.
> Scott
>
>
>
>
>
>
>
>
>
More information about the odb-users
mailing list