日期:2014-05-19  浏览次数:20846 次

OleDb更新Access数据库的问题
这段代码是更新Access数据库的,中有两个问题,让我抓狂了一天了

public   void   UpdateExpNote(IExpNote   iExpNote)
{
string   SQLUpdateExpNote   =   "UPDATE   ExpNote   SET   IsPublished   =   @IsPublished,   ProgramID   =   @ProgramID,   NoteAuthor   =   @NoteAuthor   ,NoteName   =   @NoteName   WHERE   NoteID   =   @NoteID; ";

OleDbConnection   conn   =   null;
conn   =   GetConnection();

OleDbCommand   cmd   =   new   OleDbCommand(SQLUpdateExpNote,   conn);

cmd.Parameters.Add( "@ExpNoteId ",   OleDbType.Integer).Value   =   iExpNote.ExpNoteID;
cmd.Parameters.Add( "@IsPublished ",   OleDbType.Boolean).Value   =   iExpNote.IsPublished;
cmd.Parameters.Add( "@NoteAuthor ",   OleDbType.VarWChar,   50).Value   =   iExpNote.ExpNoteAuthor;
cmd.Parameters.Add( "@ProgramID ",   OleDbType.Integer).Value   =   iExpNote.ProgramID;
cmd.Parameters.Add( "@NoteName ",   OleDbType.VarWChar,   100).Value   =   iExpNote.ExpNoteName;

conn.Open();
int   val   =   cmd.ExecuteNonQuery();
conn.Close();
}

第一是不管我的iExpNote.IsPublished是true还是false,Update以后IsPublished字段的值都变成了1,(IsPublished在Access中设为   是/否   类型)

第二是NoteName无论怎么样都不更新,即使别的字段都更新了它还是不变,死了不变,急死人了。

有谁能帮帮我的,多谢了

------解决方案--------------------
在SQLSERVER中使用@参数可以,在ACCESS中应该是使用OLEDB,应该是update tablename set field1=?,field2=? where ID=?
------解决方案--------------------
忘记了。好像是filed
------解决方案--------------------
1.直接用字符串的true/false或yes/no试试
------解决方案--------------------
1、你试试在“int val = cmd.ExecuteNonQuery();”中去掉“int val = ”
2、你的NoteAuthor和NoteName用的应该是一种表示方法,如果前者能更新后者不能,那绝对是人的问题了。我晕~~怎么可能哦