问题描述
问题:由于ACCESS和SQLServer数据库是经常使用的两种数据库,而且操作上很相似,决定将代码写在一起,用一个数据库类型选择来做判断,代码如下//数据库类型选择if(DatabaseType=="ACCESS"){OleDbDataReadermyReader=GetMyOleDbDataReader(mySql);}else{SqlDataReadermyReader=GetMyReader(mySql);}if(myReader.Read()){//执行语句}错误提示:当前上下文中不存在名称“myReader”,请问大家帮忙看一下,如何解决,谢谢
解决方案
解决方案二:
你的myReader是在if()里面定义的,在外面当然找不到了你把这两个在外面定义一下
解决方案三:
试过了,定义到外面,会提示重名
解决方案四:
//定义myReaderSystem.Data.Common.DbDataReadermyReader=null;//数据库类型选择if(DatabaseType=="ACCESS"){myReader=GetMyOleDbDataReader(mySql);}else{myReader=GetMyReader(mySql);}if(myReader.Read()){//执行语句}
解决方案五:
//在使用myReader时最好先判断一下是否为null。if(myReader!=null&&myReader.Read())
解决方案六:
把一个定义在if外面,另一个加判断.//数据库类型选择OleDbDataReadermyReader=GetMyOleDbDataReader(mySql);if{SqlDataReadermyReader=GetMyReader(mySql);}if(myReader.Read()){//执行语句}
解决方案七:
OleDbDataReadermyReader=GetMyOleDbDataReader(mySql);if(DatabaseType!="ACCESS"){SqlDataReadermyReader=GetMyReader(mySql);}
解决方案八:
引用3楼wuyi8808的回复:
C#code//定义myReaderSystem.Data.Common.DbDataReadermyReader=null;//数据库类型选择if(DatabaseType=="ACCESS"){myReader=GetMyOleDbDataReader(mySql);}else{myReader=GetMyReader(mySql);}if(myReader.Read()){//执行语句}
这个是新技术吧,我来试一下。
解决方案九:
还是不要写在一起,可以抽象一把
解决方案十:
工厂模式啊