多语言界面软件开发框架 - 初始化多语言时发生单引号错误(解决方案)

  多语言界面软件开发框架 - 初始化多语言时发生单引号错误(解决方案)



程序初始化多语言时发生单引号错误,如下图:


贴图图片-csframework-multi-lan多语言界面框架12



错误原因:


前端传入单引号文本内容,导致SQL错误。



解决方案:


1. 替换系统数据库(CSFrameworkXX_System.dbo.usp_InitLanguage存储过程


SQL Code:


ALTER PROCEDURE [dbo].[usp_InitLanguage]
  
@LanType VARCHAR(10),
  
@ObjectID NVARCHAR(500),
  
@LanData NVARCHAR(500),
  
@ItemType VARCHAR(20)
AS
BEGIN
  
  
/**********************************************************
  程序说明:初始化一条多语言资料
  
  SELECT * FROM dbo.sys_Language
  
  usp_InitLanguage 'CHS','TEST','测试SSS','Control'
  usp_InitLanguage 'CHT','TEST','测试TTT','Message'
  usp_InitLanguage 'CHT','TE2ST','测''试''TTT','Message'
  
  **********************************************************
*/
  
  
DECLARE @SQL NVARCHAR(MAX),@Value NVARCHAR(500)
  
  
IF EXISTS(SELECT * FROM dbo.sys_Language WHERE ObjectID=@ObjectID)
  
BEGIN
  
IF @LanType='CHS' UPDATE sys_Language SET CHS=@LanData WHERE ObjectID=@ObjectID
  
IF @LanType='CHT' UPDATE sys_Language SET CHT=@LanData WHERE ObjectID=@ObjectID
  
IF @LanType='ENG' UPDATE sys_Language SET ENG=@LanData WHERE ObjectID=@ObjectID
  
IF @LanType='VN' UPDATE sys_Language SET VN=@LanData WHERE ObjectID=@ObjectID
  
END
  
ELSE
  
BEGIN
  
IF @LanType='CHS' INSERT INTO sys_Language(ObjectID,ItemType,CHS,CreateTime) VALUES (@ObjectID,@ItemType,@LanData,GETDATE())
  
IF @LanType='CHT' INSERT INTO sys_Language(ObjectID,ItemType,CHT,CreateTime) VALUES (@ObjectID,@ItemType,@LanData,GETDATE())
  
IF @LanType='ENG' INSERT INTO sys_Language(ObjectID,ItemType,ENG,CreateTime) VALUES (@ObjectID,@ItemType,@LanData,GETDATE())
  
IF @LanType='VN' INSERT INTO sys_Language(ObjectID,ItemType,VN,CreateTime) VALUES (@ObjectID,@ItemType,@LanData,GETDATE())
  
END
  
  
END
  
  
//来源:C/S框架网 | www.csframework.com | QQ:23404761




2. 修改LanDatabase.cs Get方法



C# Code:

//将一个单引号变成两个(跟SQL语法是一样的).
//所以在使用Select方法或DataView的时候,一定要注意把字符条件值的一个单引号改成两个单引号,执行
if (objectID.IndexOf("'") >= 0) objectID = objectID.Replace("'", "''");
DataRow[] rs
= _languageData.Select("ObjectID='" + objectID + "'");


//来源:C/S框架网 | www.csframework.com | QQ:23404761




贴图图片-csframework-multi-lan多语言界面框架13


适应版本:

CSFramework标准版V2.3
CSFramework旗舰版V5.0




C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

语言界面软件开发框架 - 初始化语言发生单引号错误解决方案
C# Winform软件快速开发框架|软件开发平台 - 界面语言实现原理
C/S架构语言界面UI框架软件开发框架(C#.NET+Winform+DEV+SQL)
C/S架构软件:系统权限初始化、系统初始化界面设计及参考方案
C# Winform支持语言界面切换的软件快速开发平台
C#.Net CS开发框架实现语言(C/S框架网)
运行系统发生错误,尝试访问缺少的方法
语言如何处理?
Winform框架 - 语言界面修改窗体标题注意事项
RedGate Licensing 激活软件提示 SQLPrompt.TrayApp解决方案
frmBaseDataForm界面的数据查询/数据编辑TabPage语言无效
Winform界面自适应快速开发框架(C#+Dev+三层架构+数据库支持)
更新数据发生错误!关键字'WHERE'附近有语法错误
C/S快速开发框架语言功能集成百度翻译接口(支持中文简体、繁体、英文、越南文)
C# Winform项目语言实现(支持简/繁/英三种语言)
引用DLL:出现不能设置下面的断点,公共语言运行无法设置断点的错误
CSFramework开发框架3.0解决方案改名教程
解决方案:启动WebApiServer失败,调用的目标发生了异常
开发框架语言包Language.dll (支持简/繁/英三种语言)
创建SoapClient对象几个常见错误提示及解决方案