各位兄弟姐妹,新年好啊。本人正赶一个程序,现在居然有一个小问题给绊了两三天了,死和没解决,请各位大哥帮忙指点啊,重重有赏啊。(我分数实在太多,只好随便是散分,我可以同一问题提问几百上千次啊)我使用ODBC的方法操作一个SQL数据库表,操作该数据库中一个表时没有出现错误,惟独对一个名为DataExampleDetail的表格进行操作时总是提示“记录集为只读”,返回的错误代码为:
AFX_SQL_ERROR_RECORDSET_READONLY,可是实际上我采用同样的代码去打开其他表却可以写,我分别使用了以下代码打开:
try{if(!m_pSet->IsOpen()) m_pSet->Open(CRecordset::dynaset,NULL,CRecordset::none);}
catch(CDEException* e){...}
或直接使用 m_pSet->Open()去打开该数据表,打开时没有提示任何错误,但执行增加记录的语句时就提示错误了: try{m_pSet->AddNew();}  catch(CDBException *e){}
总是提示“记录集是只读”,不知道还有什么窍门决定了我不能写该数据。哦。我的GetDefaultConnect()代码是return _T("ODBC;DSN=Joshua;UID=sa;PWD=...");说明我是有操作该表的权限的,再说该数据库中其他表我也可以操作,我手工也可以录入数据,没问题的。以下是该数据表的SQL脚本,其中edid是自动增加的字段。(其他表中也有自动增加的字段,操作正常)
恳请各位大侠帮忙,分可以加啊
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DataExampleDetail]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[DataExampleDetail]
GOCREATE TABLE [dbo].[DataExampleDetail] (
[edid] [int] NOT NULL ,
[xh] [varchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[serverinfoid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[sip] [char] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[pcname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[edlogintime] [varchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[edlogouttime] [varchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[step1score] [int] NULL ,
[step1file] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[step2score] [int] NULL ,
[step2file] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[step3score] [int] NULL ,
[step3file] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[step4score] [int] NULL ,
[step4file] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[step5score] [int] NULL ,
[step5file] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[score] [int] NULL ,
[edmemo] [varchar] (150) COLLATE Chinese_PRC_CI_AS NULL ,
[eid] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[tid] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[jfid] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[ServerName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
GOIF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'testDB')
DROP DATABASE [testDB]
GOCREATE DATABASE [testDB]  ON (NAME = N'testDB_Data', FILENAME = N'C:\Program Files\SQL Server\MSSQL\data\testDB_Data.MDF' , SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N'testDB_Log', FILENAME = N'C:\Program Files\SQL Server\MSSQL\data\testDB_Log.LDF' , SIZE = 1, FILEGROWTH = 10%)
 COLLATE Chinese_PRC_CI_AS
GOexec sp_dboption N'testDB', N'autoclose', N'false'
GOexec sp_dboption N'testDB', N'bulkcopy', N'false'
GOexec sp_dboption N'testDB', N'trunc. log', N'false'
GOexec sp_dboption N'testDB', N'torn page detection', N'true'
GOexec sp_dboption N'testDB', N'read only', N'false'
GOexec sp_dboption N'testDB', N'dbo use', N'false'
GOexec sp_dboption N'testDB', N'single', N'false'
GOexec sp_dboption N'testDB', N'autoshrink', N'false'
GOexec sp_dboption N'testDB', N'ANSI null default', N'false'
GOexec sp_dboption N'testDB', N'recursive triggers', N'false'
GOexec sp_dboption N'testDB', N'ANSI nulls', N'false'
GOexec sp_dboption N'testDB', N'concat null yields null', N'false'
GOexec sp_dboption N'testDB', N'cursor close on commit', N'false'
GOexec sp_dboption N'testDB', N'default to local cursor', N'false'
GOexec sp_dboption N'testDB', N'quoted identifier', N'false'
GOexec sp_dboption N'testDB', N'ANSI warnings', N'false'
GOexec sp_dboption N'testDB', N'auto create statistics', N'true'
GOexec sp_dboption N'testDB', N'auto update statistics', N'true'
GOuse [testDB]
GO