2004年01月15日 星期四 16:11
我的数据库文件的确用了中文的字段名,一会儿我就改成英文的再试一试。 --- 刘鑫 <lx1978 at 21cn.com> 的正文:> wide 288: > 您好! > > 我怀疑是你的数据库中有中文的字段名,所以导致以上错误,具体验证要等到晚上了。 > > > ======= 2004-01-15 14:29:35 您在来信中写道:======= > > >我参考 > >>>> import win32com.client > > > >>>> conn = > >win32com.client.Dispatch(r'ADODB.Connection') > > > >>>> DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA > >SOURCE=C:/MyDB.mdb;' > > > >>>> conn.Open(DSN) > > > >经过上面的设置之后,就可以直接连接数据库了: > > > >首要的任务是打开一个数据集/数据表 > > > >>>> rs = > win32com.client.Dispatch(r'ADODB.Recordset') > > > >>>> rs_name = 'MyRecordset' > > > >>>> rs.Open('[' + rs_name + ']', conn, 1, 3) > > > > > > > >[1和3是常数.代表adOpenKeyset > >和adLockOptimistic.我用它作为默认值,如果你的情况不同的话,或许你应该改变一下.进一步的话题请参考ADO相关材料.] > > > > > >打开数据表后,你可以检查域名和字段名等等 > > > >>>> flds_dict = {} > > > >>>> for x in range(rs.Fields.Count): > > > > ... flds_dict[x] = rs.Fields.Item(x).Name > > > > > > > >字段类型和长度被这样返回A : > > > >>>> print rs.Fields.Item(1).Type > > > >202 # 202 is a text field > > > >>>> print rs.Fields.Item(1).DefinedSize > > > >50 # 50 Characters > > > > > > > >现在开始对数据集进行操作.可以使用SQL语句INSERT > >INTO或者AddNew() 和Update() > > > >>>> rs.AddNew() > > > >>>> rs.Fields.Item(1).Value = 'data' > > > >>>> rs.Update() > > > >这些值也能够被返回: > > > >>>> x = rs.Fields.Item(1).Value > > > >>>> print x > > > >'data' > > > > > > > >因此如果你想增加一条新的记录,不必查看数据库就知道什么number > >和AutoNumber 字段已经产生了 > > > >>>> rs.AddNew() > > > >>>> x = > rs.Fields.Item('Auto_Number_Field_Name').Value > > > > > ># x contains the AutoNumber > > > >>>> rs.Fields.Item('Field_Name').Value = 'data' > > > >>>> rs.Update() > > > >使用ADO,你也能得到数据库里面所有表名的列表: > > > > >>> oCat = > >win32com.client.Dispatch(r'ADOX.Catalog') > > > > >>> oCat.ActiveConnection = conn > > > > >>> oTab = oCat.Tables > > > > >>> for x in oTab: > > > > ... if x.Type == 'TABLE': > > > > ... print x.Name > > > > > > > >关闭连接. > 注意这里C是大写,然而关闭文件连接是小写的c. > > > > >>> conn.Close() > >------------------------------------------ > >以上内容没有成功的连接我的mdb 文件。 > >而我编辑成.py 文件后也没有成功。代码如下: > >--------------------------------- > > > >import win32com.client > >conn = > win32com.client.Dispatch(r'ADODB.Connection') > >DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA > >SOURCE=C:/MyDB.mdb;' > >conn.Open(DSN) > >rs = win32com.client.Dispatch(r'ADODB.Recordset') > >rs_name = > 'MyRecordset'#不知道这是表名,还是字段名, > >rs.Open('[' + rs_name + ']', conn, 1, > >3)#这里的1和3到底表示什么意思啊。 > >flds_dict = {} > >for x in range(rs.Fields.Count): > > flds_dict[x] = rs.Fields.Item(x).Name > >#字段类型和长度被这样返回 > >#print rs.Fields.Item(1).Type > >#print rs.Fields.Item(1).DefinedSize > >x = rs.Fields.Item(1).Value > >print x > >conn.Close() > >--------------------- > >上面就是我找到的代码,不明白问题出在那里。: > >Traceback (most recent call last): > > File > >"D:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", > >line 310, in RunScript > > exec codeObject in __main__.__dict__ > > File "D:\Python23\src\data1.py", line 24, in ? > > print x > > File > >"D:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\winout.py", > >line 172, in write > > return self.template.write(msg) > > File > >"D:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\winout.py", > >line 487, in write > > self.HandleOutput(message) > > File > >"D:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\winout.py", > >line 468, in HandleOutput > > self.QueueFlush() > > File > >"D:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\winout.py", > >line 444, in QueueFlush > > item = str(item) > >UnicodeEncodeError: 'ascii' codec can't encode > >characters in position 0-5: ordinal not in > range(128) > > > > > >_________________________________________________________ > >Do You Yahoo!? > >繁华世界里,让我看清你 > >http://cn.rd.yahoo.com/mail_cn/tag/?http://cn.surveys.yahoo.com/cn_user_profile_study_dec2003 > >_______________________________________________ > >python-chinese mailing list > >python-chinese at lists.python.cn > >http://lists.exoweb.net/cgi-bin/mailman/listinfo/python-chinese > > > > = = = = = = = = = = = = = = = = = = = = > > > 致 > 礼! > > > 刘鑫 > lx1978 at 21cn.com > 2004-01-15 > > _________________________________________________________ Do You Yahoo!? 繁华世界里,让我看清你 http://cn.rd.yahoo.com/mail_cn/tag/?http://cn.surveys.yahoo.com/cn_user_profile_study_dec2003
Zeuux © 2024
京ICP备05028076号