C++Builder 程序员博客
27 Aug
软件中大量使用了ShockWaveFlash ,当程序在BCB编程环境中编译状态时,不会出现任何问题.
当软件release后,偶而某个窗口会弹出Accress violation at XXXXXXXX(感觉象吃了苍蝇一样恶心),点确定后,发现Flash没有播放出来.关闭出错窗体,重新打开,Flash又能正常播放了,很邪门吧!
请高手指点,问题出在哪儿,该如何解决!
我觉得不一定是ShockWaveFlash 的事情,也可能是某处代码有泄露或者有冲突,造成的!比如对VCL控件的访问,最好不要放在子线程里,或者内存溢出(用CodeGuard查看一下),或者线程的互斥没有做好,都有可能!
23 Aug
有一dat文件 格式如下
C0808006,5
C0808007-1,2
C0808002,1
C0808033,5
C0807018,7
C0807016,7
C0806231,2
C0807231,1
C0808163-60,1
C0808220-2,3
逗号前是编号 逗号后是数量
数据库表名为aaa里面有两字段mono和nop
dat文件中的编号在mono中已经存在
怎样做才能导入dat文件中的数量到nop,并且编号和mono对应.
谢谢楼上
假如说把这个文件读到memo1里
怎样才能一条一条的加到数据库里
memo有lines的属性啊!
for(int i=0;i <Memo1->Lines->Count;i++ )
ShowMessage(Memo1->Lines->Strings[i]);
memo有lines的属性啊!
for(int i=0;i <Memo1->Lines->Count;i++ )
ShowMessage(Memo1->Lines->Strings[i]);
写入数据库中后,你可以用mono字段加逗号来查询,
像
SELECT * FROM 表名 where 字段名 like 'C0808007-1,%'
查出来之号用substring就可以了。
能不能留个QQ或加我,就差最后一步了,麻烦你帮忙看下. 谢谢
我的QQ:一一一一五五五
手动导进去不就行了。。。
ado也可以连接文本文件的. 就像连ACCESS一样.
不考虑效率的话, 用个ADO循环一下就行了.
自己折腾好了 谢谢各位帮忙
19 Aug
我想做一个资料管理系统,用Access和c++builder,但是不会用c++builder连接Access里的数据库,请各位朋友帮帮忙并提供一段示例代码,谢谢!
C++Builder操作Access数据库,用ADO组件方便快捷。
这么多星星!
创建ADO的连接,首先要设置ADO连接对象的ConnectionString属性,该属性提供所要连接的数据库类型、数据所处服务器、要访问的数据库和数据库访问的安全认证信息。
比较专业的方法是在ConnectionString中直接提供以上信息,
下面是访问ACCESS数据源设置ConnectionString的字符串:
访问ACCESS 数据库
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassword; "
访问有密码的access数据库
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=netcontrol.mdb;Persist Security Info=False;Jet OLEDB:Database Password=access_2004 "
http://www.go4pro.org/cate_list.asp?cate=1
up
都说完了
先在系统中配置好连接数据库的ODBC,再用ADO组件,很方便的
在ADO中加ADOConnection1 双击-> build…-> Microsoft Jet 4.0 OLE DB Provider
-> 下一步-> 选择你要连接的数据库
很简单的,用ADO/BDE连都行,不过要先配ODBC
再问达人,我用ADO连接网络数据库,如何设置登陆计算机的用户名和密码
使用BDE时,需要配置ODBC,这样不方便,而用ADO时,则不需要。
我也想知道哦
ADO不需要用ODBC.
控制面板->管理工具->数据源->添加->选择Driber do microsoft access(*.mdb)->完成->填上数据名
然后在点击数据库下的"选择"然后输入你的access的路径名
设置好了后可以在odbc数据源管理器看到你的数据名称
再就是要在你的c++buider中把你的Table/Query中的属性databasename="数据名"tablename=access名
query只有databaseneme;
该回复于2008-07-19 16:11:06被版主删除
该回复于2008-06-08 11:33:01被版主删除
使用ADO连接比较方便
用ADOConnection
数据连接方式是:什么JET 4.0的.
然后连接文件选ACCESS数据库就可以了.
顶
ADO,楼上大哥们都已经说得很明白了
1、加组件ADOTable,根据提示设置属性ConnectString,测试连接成功后,点OK,然后在Table属性中选自己所要连接的表
2、加组件DataSource并将DataSource属性设置为ADOTable
3、常用操作
a)插入ADOTable->Insert();
b)编辑ADOTable->Edit();
c)删除ADOTable->Delete();
需更多帮助请加我QQ:296318756
邮箱:zhuyongkang2006@126.com
用ADO组件方便快捷。
C++Builder操作Access数据库,用ADO组件方便快捷。
5 Aug
access日期型字段其实是Double,现在的问题是:access日期型字段My_Date为主键,SQL里的“where CDbl(My_Date)=12345.1234567890”索引起作用吗?如不起作用,应怎样改?这样做是因为在C++Builder里用ADOConnection->Execute,SQL语句原为“where My_Date=#时间字符串#”,"#时间字符串#"必须要是精确到毫秒以下,字符串难以表达,我试过用“where My_Date=12345.123456789012”,在access里可定位记录,但在CB里不能定位,另试“where My_Date between 12345.123456789 and 12345.123456790”在CB也不能定位,只有“where CDbl(My_Date)=12345.1234567890”在CB里能定位。
19 Jul
谁给我一段 自动创建ACCESS数据库的代码? 论坛上找了好多了,但就是不行
同盟用到哪些控件请说明一下
不行啊 有没有人给我详细讲一下啊
怎么不行?
可以的,呵呵,代码主要是loveshell完成的,它是原作者!
loveshell的那段代码我测试过的,后面的代码有些改动,你把整个帖子看完,包括后面的回复帖子!
bool TDM::CreateTempDataBase()
{//创建一个临时数据库
Variant CreateAccess ;
String dataname="Data\\temp.mdb"
if(FileExists(dataname))
DeleteFile(dataname);
String dir="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
String connstring=dir+dataname;
//通过建立ADOX(Microsoft ActiveX(R) Data Objects Extensions)对象进行访问
CreateAccess=CreateOleObject("ADOX.Catalog");
try{
CreateAccess.OleFunction("Create",connstring.c_str());//创建数据库
TADOCommand *comm=new TADOCommand(this);
comm->ConnectionString=connstring; //创建数据表
comm->CommandText="create table 上报汇总(段别 varchar(3),类型 varchar(10),名称 varchar(25),编号 varchar(15),生产厂家 varchar(20),生产日期 varchar(10),机车号 varchar(15),检修日期 datetime)";
comm->Execute();
delete comm;
return true;
}
catch(…){
return false;
}
}
//—————————————————————————
呵呵,最简单的做个模板文件放在那里,用时复制一份。好多程序就是这样做的。
请问LOVESHELL conn=conn+DbName; DBNAME是什么啊,没有定义过啊
还有那个DataModule1在哪里啊
那是我自己的代码,你得稍微改一下。DBNAME是你要生成的数据库的路径,DataModule1是放ADOCommand1的地方,代码用到了TADOConnection和TADOCommand两个控件。
我吧数据库放到资源文件中了,用的时候在拿出来用。。。
DataModule1是To create a new, empty data module, choose File ¦New ¦Data Module (or File ¦New ¦Other and click the Data Module icon) 这样生成的对吧? 然后再加入到原工程中, 但是编译时还是说DataModule1没有定义过 晕死了
注意包含Datamoudle1所在单元的头文件!
还不行,提示说 "ADOCommand1" is not a member of "TDataModule1" 又是为什么呢? 有点自卑了
顶!!!!!
你的ADOCommand1没有放在DataModule1里面.注意,凡是要用到ADO的地方,必须都包含头文件:DataModule1.h
19 Jul
那里有相似程序的源码下啊?
恩,你可以用InterBase,paradox
单机版的财务软件大多用的桌面数据库
比如用友的财务通 就用的MSDE
sqlite
推荐用sqlite ,功能强大,速度快!!
用文本或者其他方式
模拟数据库方式管理数据就OK啦
当然,如果数据库超过限度,会很惨哦
一个从MDB里读取数据后,另一个怎么构造插入的sql语句?我的ACCESS表里日期字段是文本型,sqlserver里日期字段是date类型,能用
SELECT *
INTO newtable
FROM OPENDATASOURCE ( 'Microsoft.Jet.OLEDB.4.0 ',
'Data Source= "c:\DB.mdb ";User ID=Admin;Password= ' )…表名
方法吗?试过几次老是出错
.......我需要这样做.
上面问题已解决,再问一下socketconnection有没有类似BeginTrans()的方法?怎么实现回滚呢?
up
3 Jul
想用ADOQuery1检查ACCESS表的存在,然后drop。使用"SELECT count(*) FROM MSysObjects WHERE name = 'MyTab'",该语句在ACCESS2007内可执行,但在CB2007内出错:“不能读取记录,在MSysObjects上没有读取数据的权限。”,现问:
1、我的ADOConnection1->ConnectionString为"Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=123;Data Source=d:\MyDBF.mdb",应怎样改?
2、有别的办法用SQL来先检查表的存在,后DROP吗?
30 Jun
想要更改Access数据库的密码,使用Alter database password …提示不能改变一个打开的共享数据库的密码
http://topic.csdn.net/u/20080629/22/0fc34ba0-7818-403a-9a6e-c49e85abe01c.html
28 Jun
ADOQUERY ACCESS 怎么才能得到数据库里的所有表的名字?我想放到LISTBOX里面。请高手赐代码?说的详细些啊。我是初学者。
ADOQUERY 貌似没法实现,顶老蔡!
先顶下菜锅
TADODataSet *pDataSet=new TADODataSet(0); //OpenSchema参数比较多,这里我们只要获取他的表,你还可以获取很多东东 ADOConnection1->OpenSchema(siTables,Variant::NoParam(),Variant::NoParam(),pDataSet); try { //将结果加入ListBox中 pDataSet->First(); while(!pDataSet->Eof) { //只获取用户创建的表 if(pDataSet->FieldByName("TABLE_TYPE")->AsString.UpperCase()=="TABLE") ListBox1->Items->Add(pDataSet->FieldByName("TABLE_NAME")->AsString); pDataSet->Next(); //指针移动到下一条记录 } } catch(…) { MessageBox(0,"bcb群-[4670-3864]","发生不可预知的错误!",MB_OK); }
建议用老蔡的方法!,若要获取数据库更多的信息(比如每个表的所有字段等),可以用这个方法
结账先..谢谢楼上的几位啦.