oracle插入字符串数据时字符串中有'单引号问题

使用insert into(field1,field2...) values('val1','val2'...)时,若值中有单引号时会报错。

处理方法:判断一下val1,val2中是否含有单引号,若含单引号,则将单引号'替换成两个单引号''。

将字段与字段值组织到一个HashTable中,再抽象出一个组织sql语句的函数getSqlByHashTable():

HashTable ht =new HashTable();
ht.add(field1,val1);
ht.add(field2,val2);
ht.add(field3,val3);
 。。。
public string getSqlByHashTable(string tablename,HashTable ht){
   StringBuilder sb=new StringBuilder();
  sb.append("insert into "+tablename+"(");
  StringBuilder fsb=new StringBuilder();
  StringBuilder vsb=new StringBuilder();
  foreach(var key in ht.Keys)
  {
    fsb.append(key+",");
    string value=ht[key];
    if(value.trim()=="")
    {
      value="";
    }
    else
    {
      if(value.Contains("'"))
      {
        value=value.replace("'","''");
      }
      value="'"+value+"'";
    }
    vsb.append(value+",");
  }
  sb.append(fsb.toString().Substring(0,fsb.toString().length-1));
  sb.append(") values(");
  sb.append(vsb.toString().Substring(0,vsb.toString().length-1));
  sb.append(")");
  return sb.toString();
}

以上所述是小编给大家介绍的oracle插入字符串数据时字符串中有'单引号问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对我们网站的支持!

时间: 2017-04-15

浅谈oracle中单引号转义

ORACLE 单引号转义: 在ORACLE中,单引号有两个作用: 1:字符串是由单引号引用 2:转义. 单引号的使用是就近配对,即就近原则.而在单引号充当转义角色时相对不好理解 1.从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个). SQL> select '''' result from dual; RESULT ------ ' 第二个单引号被作为转义符,第三个单引号被转义,可将sql写成这样更好理解: select ' '' ' from dual; outp

Oracle中转义字符的详细介绍

最近工作中遇到一个需求,需要更新Oracle数据库中所有表的一个字段"flag"为"I",语句为: update table_name set flag = 'I' "I"作为字符串,所以语句中I需要加上单引号. 由于数据库中有多张表,我不想一条一条的语句写,希望能够通过sql语句直接生成所有的语句,所以写了如下sql: select 'update ' || table_name || ' set flag = 'I'' || ';' from

oracle 虚拟专用数据库详细介绍

所谓虚拟专用数据库(VPD)指的是,通过在数据库里进行配置,从而让不同的用户只能查看某个表里的部分数据.VPD分为以下两个级别. 行级别:在该级别下,可以控制某些用户只能查看到某些数据行.比如,对于销售数据表sales 来说,每个销售人员只能检索出他自己的销售数据,不能查询其他销售人员的销售数据. 列级别:在该级别下,可以控制某些用户不能检索某个表的某个列的值.比如用户HR 下的 employees 表中,含有工资(salary)列,由于该列比较敏感,因此不让其他用户查询该列的值. 其他用户检索

maven中pom.xml详细介绍

POM 代表工程对象模型.它是使用 Maven 工作时的基本组建,是一个 xml 文件.它被放在工程根目录下,文件命名为 pom.xml. POM 包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程. POM 也包含了目标和插件.当执行一个任务或者目标时,Maven 会查找当前目录下的 POM,从其中读取所需要的配置信息,然后执行目标.能够在 POM 中设置的一些配置如下: project dependencies plugins goals build profiles pr

Python 中pandas.read_excel详细介绍

Python 中pandas.read_excel详细介绍 #coding:utf-8 import pandas as pd import numpy as np filefullpath = r"/home/geeklee/temp/all_gov_file/pol_gov_mon/downloads/1.xls" #filefullpath = r"/home/geeklee/temp/all_gov_file/pol_gov_mon/downloads/26368f3

Spring在web.xml中的配置详细介绍

Spring在web.xml中的配置详细介绍 前言      在实际项目中spring的配置文件applicationcontext.xml是通过spring提供的加载机制自动加载到容器中.在web项目中,配置文件加载到web容器中进行解析.目前,spring提供了两种加载器,以供web容器的加载:一种是ContextLoaderListener,另一种是ContextLoaderServlet.这两种在功能上完全相同,只是前一种是基于Servlet2.3版本中新引入的Listener接口实现,

Docker中的镜像详细介绍

Docker中的镜像详细介绍 Docker镜像可以理解为运行在Docker容器中的一个组件,本节将会带领大家学会Docker镜像的下载.搜索.查看.添加删除等一系列操作.Docker在运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会尝试从默认的远程仓库Docker Hub下载. 一.获取镜像:  1.Docker从网络上下载镜像的格式为: docker pull [NAME]:[TAG] 其中TAG即为标签,如果不指定标签的话,那么默认会下载最新版本的镜像. 比如从Docke

Spring中@Transactional用法详细介绍

Spring中@Transactional用法详细介绍 引言: 在spring中@Transactional提供一种控制事务管理的快捷手段,但是很多人都只是@Transactional简单使用,并未深入了解,其各个配置项的使用方法,本文将深入讲解各个配置项的使用. 1.  @Transactional的定义 Spring中的@Transactional基于动态代理的机制,提供了一种透明的事务管理机制,方便快捷解决在开发中碰到的问题.在现实中,实际的问题往往比我们预期的要复杂很多,这就要求对@Tr

Java中ArrayList类详细介绍

Java中ArrayList类详细介绍 ArrayList是一个可变长度数组,它实现了List接口,因此它也可以包含重复元素和Null元素,也可以任意的访问和修改元素,随着向 ArrayList 中不断添加元素,其容量也自动增长.不过ArrayList是非同步(同步的意思是如果多个线程同时访问一个实例,任何一个线程对实例做了修改之后,其他线程所访问到的实例应该是修改过的最新的实例)的, 我们经常使用List list = Collections.synchronizedList(new Arra

Android Service中方法使用详细介绍

 service作为四大组件值得我们的更多的关注 在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务.例如,一个从service播放音乐的音乐播放器,应被设置为前台运行,因为用户会明确地注意它的运行.在状态栏中的通知可能会显示当前的歌曲并且允许用户启动一个activity来与音乐播放器交互. Service的两种实现形式 1.非绑定 通过调用应用程序组件(例如Activity)的startService()方法来启动一个服务.一旦启动,服务就会在

Java编程中的构造函数详细介绍

本文主要是为新手.对java语言感兴趣的人和那些没有系统学习过java基础知识的人进行一个总结,在文章中对构造函数进行了较为详细的说明和讨论,也包含了我个人对于java面向对象中构造函数的一些看法.希望走在java学习道路上的同行者可以有一个较为清晰的认知和理解.当然仅为个人观点,水平有限,不足之处,还请大家多多指出,互相交流学习. 1.构造函数的概念 很多java新手谈到构造函数就会犯晕,我们先来看看什么是构造函数. 首先,构造函数是函数的一种特殊形式,特殊在哪里?构造函数中不需要定义返回类型