我有一个名字在其中的数据库,如John Doe等.不幸的是,其中一些名字包含像Keiran O'Keefe这样的引号.现在,当我尝试搜索如下名称时:
SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe'
Run Code Online (Sandbox Code Playgroud)
我(可以理解)得到一个错误.
如何防止发生此错误.我正在使用Oracle和PLSQL.
我有一家最近加入的国际公司,名为"BLA"BLAHBLAH"Ltd.(双引号是该名称的一部分.)
每当用户尝试搜索此公司时,通过输入"Blah或其他影响,搜索失败并在SQL Server中出现语法错误.
我如何逃避这一点,以便搜索不会失败?
示例SQL:
SELECT c.companyID, c.companyName, c.dateAdded, count(cm.maxID) as NumDirect
FROM RussoundGeneral.dbo.Company c
LEFT JOIN RussoundGeneral.dbo.CompanyMax cm
ON (cm.companyId = c.companyId and cm.maxID is not null)
WHERE CONTAINS ( companyName, '"BLAH*' )
GROUP BY c.companyID, c.companyName, c.dateAdded
ORDER BY c.companyName ASC
Run Code Online (Sandbox Code Playgroud) 我的应用程序目前使用SQLite数据库为用户存储消息.但是,如果用户在任何字段中输入撇号,则数据库崩溃.我意识到这个问题是由于SQLite使用撇号作为引用分隔符(我在存储的消息文本周围放置了单个撇号),但是想不出有什么好方法可以解决这个问题.在SQLite数据库中存储带撇号的字符串是否常见?
以下是我收到的错误示例:
java.lang.RuntimeException: Unable to resume activity {x.x.x.x/x.x.x.x.Main}: android.database.sqlite.SQLiteException: near "m": syntax error: , while compiling: SELECT title, contact_name, contact_number FROM contacts WHERE title='I'm at work'
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:859)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: near "m": syntax error: , while compiling: SELECT title, contact_name, contact_number FROM contacts WHERE title='I'm at work'
at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试更新Android应用程序中的SQLite表.此更新的谓词是围绕存储不同资源URL的列构建的.
这些URL可能包含特殊字符,例如/〜?=; (乃至 &).
我的查询如下:
update TableName where columnVal = '/some/fake/~/id?u=0&rl=url';
Run Code Online (Sandbox Code Playgroud)
更新查询不起作用; 它没有确定满足条件的列.
我怎么能逃脱这些角色?
请指教.