由于ACCESS和SQL Server数据库是经常使用的两种数据库, 而且操作上很相似,决定将代码写在一起,但在操作上出了问题

问题描述

问题:由于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()){//执行语句}

这个是新技术吧,我来试一下。
解决方案九:
还是不要写在一起,可以抽象一把
解决方案十:
工厂模式啊

时间: 2024-12-31 02:58:50

由于ACCESS和SQL Server数据库是经常使用的两种数据库, 而且操作上很相似,决定将代码写在一起,但在操作上出了问题的相关文章

SQL Server中处理单引号的两种技巧

和数据库打交道要频繁地用到SQL语句,除非你是全部用控件绑定的方式,但采用控件绑定的方式存在着灵活性差.效率低.功能弱等等缺点.因此,大多数的程序员极少或较少用这种绑定的方式.而采用非绑定方式时许多程序员大都忽略了对单引号的特殊处理,一旦SQL语句的查询条件的变量有单引号出现,数据库引擎就会报错指出SQL语法不对,本人发现有两种方法可以解决和处理这种单引号的问题(以VB为例子). 方法一:利用转义字符处理SQL语句.下面的函数可以在执行SQL语句前调用,执行处理后的结果即可产生正确的结 果. F

sql server中批量插入与更新两种解决方案分享(asp.net)_实用技巧

若只是需要大批量插入数据使用bcp是最好的,若同时需要插入.删除.更新建议使用SqlDataAdapter我测试过有很高的效率,一般情况下这两种就满足需求了 bcp方式 复制代码 代码如下: /// <summary> /// 大批量插入数据(2000每批次) /// 已采用整体事物控制 /// </summary> /// <param name="connString">数据库链接字符串</param> /// <param n

在ACCESS和SQL Server下Like 日期类型查询区别_数据库其它

最近在用ACCESS数据库是遇到的问题总结: 一.在ACCESS中LIKE的用法 Access里like的通配符用法是这样: "?"表示任何单一字符: "*"表示零个或多个字符: "#"表示任何一个数字 所以应该是: select * from databasename where fieldname like '*XX*' 但在SQL SERVER 里是用%表示零个或多个字符 二.如何在ACCESS查询datetime类型字段的日期范围数据 如

sql server中批量插入与更新两种解决方案分享(存储过程)_MsSql

1.游标方式 复制代码 代码如下: DECLARE @Data NVARCHAR(max) SET @Data='1,tanw,2,keenboy' --Id,Name DECLARE @dataItem NVARCHAR(100) DECLARE data_cursor CURSOR FOR (SELECT * FROM split(@Data,';')) OPEN data_cursor FETCH NEXT FROM data_cursor INTO @dataItem WHILE @@F

关于sql server批量插入和更新的两种解决方案_MsSql

复制代码 代码如下: .游标方式 1 DECLARE @Data NVARCHAR(max)  SET @Data='1,tanw;2,keenboy'   --Id,Name  DECLARE @dataItem NVARCHAR(100)  DECLARE data_cursor CURSOR FOR (SELECT * FROM split(@Data,';')) OPEN data_cursor FETCH NEXT FROM data_cursor INTO @dataItem   

sql server中批量插入与更新两种解决方案分享(存储过程)

1.游标方式 复制代码 代码如下: DECLARE @Data NVARCHAR(max) SET @Data='1,tanw,2,keenboy' --Id,Name DECLARE @dataItem NVARCHAR(100) DECLARE data_cursor CURSOR FOR (SELECT * FROM split(@Data,';')) OPEN data_cursor FETCH NEXT FROM data_cursor INTO @dataItem WHILE @@F

直接获取Access、SQL Server等数据库数据

access|server|数据|数据库 直接获取access.SQL Server等数据库数据Author: MixPST,Ph4nt0m Security Teamhttp://www.ph4nt0m.org 当使用SQL注入access的时候,经常会遇到密码为中文.猜不到关键字段名这样的问题.使用本技术就能够很快速的解决这样的问题.本技术最低要求有两条: 1.使用access数据库的系统存在SQL注入漏洞:mssql数据库也支持这个技术2.需要知道欲爆数据所在的表的表名以及这个表下的一个字

Access和SQL Server里面的SQL语句的不同之处_数据库其它

我的感觉是,Accees数据库虽然可以称得上是小型的关系型数据库,并且也是使用的结构化查询语言SQL,但它的语法(主要体现在函数上),却类似vbscript的语法,我想,这应该和Access属于Office系列有关,基于它的开发和应用,自然就与VBA扯上关系,因而Access的函数库也就是VBA的函数库,而非SQL函数库.下面,我们来具体看下Access和SQL Server在查询语句的编写上具体的不同. 一.数据类型转换: Access: SELECT '调查'+CStr(Did) as di

access数据库-access连接sql server同步更新问题

问题描述 access连接sql server同步更新问题 电脑A数据采集用的是access每天更新一张新表,连接服务器B的sql server同步更新也是一天一张新表,利用什么方式可以解决? 解决方案 用C#写个windows服务程序或winform客户端,定时获取sql server,写入access. 解决方案二: SQL Server和Access中的条件判断语法(case when和iff)连接到数据庫(ACCESSSQL SERVER)两台SQL Server服务器同步问题.