您的位置:程序门 -> .net技术 -> c#



oledb create dbase iv 表的奇怪问题. 请教各位.


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


oledb create dbase iv 表的奇怪问题. 请教各位.[已结贴,结贴人:clearma]
发表于:2007-03-25 12:07:14 楼主
用的是oledb连接.   创建表成功了,但是字段长度不对.
如下:
private   system.data.oledb.oledbconnection   getdbaseconnection(string   directorypath)
                {
                        if   (!system.io.directory.exists(directorypath))
                        {
                                throw   new   exception( "指定的路径不存在 ",   new   exception());
                        }
                        string   connectionstring   =   "provider=microsoft.jet.oledb.4.0;data   source= "   +   directorypath   +   "   ;extended   properties=dbase   iv;user   id=;password=; ";

                        system.data.oledb.oledbconnection   conn   =   new   system.data.oledb.oledbconnection(connectionstring);

                        return   conn;

                }

private   void   createtable()
{
                      string   filename=@ "d:\database\watercard.dbf ";
                      oledbconnection   conn   =   getdbaseconnection(new   fileinfo(filename).directoryname);
                      createtablesql   =   @ "create   table   d:\database\watercard.dbf   (custid   numeric(11)   ,custno   numeric(7,0)   ,ajustqut   numeric(9,2)) ";
                        oledbcommand   olecmd   =   new   oledbcommand(createtablesql,   conn);

                        try
                        {
                                conn.open();
                                olecmd.EXECutenonquery();
                        }
                        catch   (exception   ex)
                        {
                                throw   new   exception(ex.message,   ex);
                        }
}


程序运行正常,但是表创建后字段长度并非create   table   语句中制定的长度
,而是都变成了   (20,5);
我调试了好长时间了,其他数据类型如date,logical,character都没问题,就是numeric字段类型不行.
发表于:2007-03-25 12:29:271楼 得分:33
没遇到过...

学习,关注一下...
发表于:2007-03-25 12:40:182楼 得分:33
是什么数据库啊?有些数据库是没有numeric类型字段的
发表于:2007-03-25 12:43:553楼 得分:34
帮lz顶
发表于:2007-03-25 12:54:154楼 得分:0
to:cctaiyang(带头大哥)   wshuangminlg
谢谢支持。
是   dbase   iv   数据库.有numeric,没有interger   所以才会需要custid   numeric(11),这样的。
变通的方法也有,但是我搞不懂为什么会出现这种情况啊。
发表于:2007-03-25 13:45:415楼 得分:0
在线等待,请各位帮忙看看。
发表于:2007-03-25 21:40:356楼 得分:0
这个问题也许是微软的jet   oldbd   引擎(msjetoledb.dll)不支持导致的。从网上看到有几个人问同样的问题,最后都不了了之。
如;
https://forums.microsoft.com/msdn/showpost.aspx?postid=811137&siteid=1
http://forums.microsoft.com/msdn/showpost.aspx?postid=137286&siteid=1
但是
在http://forums.microsoft.com/msdn/showpost.aspx?postid=364457&siteid=1   上,微软的一个mvp   说odbc   dbase   同样存在这个问题,那是因为ms   odbc   dbase不支持。建议使用oledb   vfp.

呵呵,说回来了,其实我原来就是用的这个,
string   connectionstring   =   "provider=vfpoledb.1;data   source= "   +   directorypath   +   "   ;collating   sequence=machine ";
只不过后来发现生成的不是dbase   iv   格式,而是visual   foxpro   格式,因为我的掌上电脑必须要求xbase   或   foxpro   格式,但是现在还是要使用它了,只不过在遇到需要创建interger等时,类型判断上尽量向dbase   上靠拢,如n(x,0)就相当于interger,就可以了。

算是揭帖了。


快速检索

最新资讯
热门点击