|
able1,下面进行界面输出的布局,选择“Data Controls”控件标签中的DBEdit根据需要放置,并把DataSource属性设置为DataSource1 ,DataField属性设置为所需要的字段名。如此放置几个字段,最后从“Data Controls”控件标签中选“DBNavigator”放在窗口上。再把ADOTable1的Active属性改为true,咦,怎么有的字段显示成(MEMO),先不管他,运行程序,输入一些内容,点击提交,怎么没了?有的字段还缩短了,多试几次,发现新输入的内容不能超过原来的长度,那么原来是空的字段就永远没法输入内容了。这是怎么回事?这种用法肯定没有问题,以前在Access数据库上就是这么用的。那么,就是MySQL的ODBC有问题,退出C++Builder,打开数据源的选项仔细分析,其中第一项vaaaa很象。把它选中,确定,重新运行C++Builder,再运行程序,一切OK。原来MySQL这样的自由软件,其ODBC选项很多,是为了适应各方面需要,不象微软或其他的数据库那样默认值就可以用。这个选项可能是为了优化一些网络上的应用,而把数据库字段的默认值总是假设为最小状态,从而造成这个问题。这可能也是自由软件的一个小缺点吧。三、ASP访问MySQL数据库的问题原来的主页中大量使用了ASP访问数据库,其中典型的用法是:dim LK_CONNset LK_CONN=server.createobject("ADODB.CONNECTION")LK_CONN.open "onduty_mysql","root",""‘以上建立数据库的连接dim RS_NEWSset RS_NEWS = server.createobject("adodb.recordset")sql = "SELECT * FROM NewsPic"RS_NEWS.open sql,LK_CONN,1,1‘以上建立对表的访问‘下面显示内容,为表达简单,没有格式,引号中为字段名=RS_NEWS("Extract")=RS_NEWS("Pic")这一段代码没有问题,实现了平滑过渡;但是有个别地方,有写入操作,数据不能正常读出。该段代码如下:dim RS_COUNTset RS_COUNT = server.createobject("adodb.recordset")RS_COUNT.open "SELECT * FROM count",LK_CONN,3,3'访问计数器dim ZcountZcount=RS_COUNT("Count")Zcount = Zcount + 1RS_COUNT("Count").Value=ZcountRS_COUNT.UpdateRS_COUNT.Close开始怀疑这一段后面有写入操作,所以不能正确执行,但经过仔细比较和测试,发现问题不在是否写入上。这一段的代码主要是用了ASP访问Access数据库时直接填入数据库名的方法,而没有使用SQL语句,我们把打开数据库的地方改为“select * from 表名”,程序遂工作正常。结论:编程时应该尽量使用通用性好的方法,这样对于系统的通用性、可移植性来说,还是很重要的。四、ODBC的问题在C++Builder中有的地方要用到SQL查询,因此,有一段程序使用的是ADOQuery控件,本来这种用法在其他机器上用过,没有问题,可是在这里却不行。具体情况如下:放置一个ADOQuery,ConnectionString属性、TableName属性和前面的ADOTable属性设置一样,Act 上一页 [1] [2] [3] [4] 下一页
|