免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1966 | 回复: 6
打印 上一主题 下一主题

在如果SQL里有引号,应该怎么处理? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-03 16:22 |只看该作者 |倒序浏览
我用JDBC连接MYSQL,插入的数据里有引号,我应该怎么处理。我的SQL是这样的,已经加了斜杠,但还说语法错。

INSERT INTO table (address) VALUES('King\'s tower');

论坛徽章:
0
2 [报告]
发表于 2004-03-03 16:54 |只看该作者

在如果SQL里有引号,应该怎么处理?

INSERT INTO table (address) VALUES(?);

setString(1,"King's tower";

论坛徽章:
0
3 [报告]
发表于 2004-03-03 17:42 |只看该作者

在如果SQL里有引号,应该怎么处理?

原帖由 "netkiller" 发表:
INSERT INTO table (address) VALUES(?);

setString(1,"King's tower";

Good!

论坛徽章:
0
4 [报告]
发表于 2004-03-03 19:09 |只看该作者

在如果SQL里有引号,应该怎么处理?

原帖由 "netkiller" 发表:
INSERT INTO table (address) VALUES(?);

setString(1,"King's tower";


这样做还能减少了一次安全隐患!!!

论坛徽章:
0
5 [报告]
发表于 2004-03-03 19:51 |只看该作者

在如果SQL里有引号,应该怎么处理?

package netkiller.database;

import java.util.*;

public class Database extends DBConnect{
       
        private String sqlFrom = null;
        private String sqlWhere = null;
        private String sqlOrder = null;
        private String sqlGroup = null;
        private String sqlLimit = null;
        private String sqlOffset = null;
       
        //private HashMap sqlHashField = new HashMap();
        private Hashtable sqlHashField = new Hashtable();
        private Vector         sqlVectorField = new Vector();
        private StringBuffer sql = new StringBuffer();
        private boolean isError = false;
        private final static String ERROR = "ERROR:";

        public Database() {
                // TODO: Add your code here
        }
       
        public void setFrom(String value){
                this.sqlFrom = value;       
        }
        public String getFrom(){
                if(sqlFrom == null){
                        isError = true;
                        return "<table>;";
                }
                return this.sqlFrom;
        }
        public void setWhere(String value){
                this.sqlWhere = value;       
        }
        public String getWhere(){
                /*
                if(sqlWhere == null){
                        return "<where>;";       
                }
                */
                return sqlWhere;
        }
        public void setOrder(String value){
                this.sqlOrder = value;
        }
        public void setGroup(String value){
                this.sqlGroup = value;       
        }
        public void setLimit(String value){
                this.sqlLimit = value;       
        }
        public void setOffset(String value){
                this.sqlOffset = value;       
        }
        public void setLimit(int value){
                this.sqlLimit = value+"";       
        }
        public void setOffset(int value){
                this.sqlOffset = value+"";       
        }       
        public void put(Object key,Object value){
                sqlHashField.put(key,value);
        }
        public void add(Object object){
                sqlVectorField.add(object);
        }
        public String Select(){
                sql = new StringBuffer(1024);
                sql.append("Select ";
                Enumeration enumer = sqlVectorField.elements();
                while(enumer.hasMoreElements()){
                        sql.append(enumer.nextElement());
                        if(enumer.hasMoreElements()) sql.append(",";
                }
                sql.append(" From "+ getFrom());       
                if(sqlOrder != null) sql.append(" Where "+ getWhere());
                if(sqlOrder != null) sql.append(" Order By "+ sqlOrder);
                if(sqlGroup != null) sql.append(" Group By "+ sqlGroup);
                if(sqlLimit != null) sql.append(" Limit "+ sqlLimit);
                if(sqlOffset!= null) sql.append(" Offset "+ sqlOffset);
                return isError?ERROR+sql.toString():sql.toString();
        }
        public String Delete(){
                sql = new StringBuffer(255);
                sql.append("Delete From ";
                sql.append(getFrom());
                if(sqlOrder != null) sql.append(" Where "+ getWhere());
                return isError?ERROR+sql.toString():sql.toString();
        }
/*
        public String Update(){
                sql = new StringBuffer(1024);
                Iterator iterator = sqlHashField.entrySet().iterator();
                sql.append("Update ";
                String key,value;
                if(sqlFrom  != null) sql.append(sqlFrom+ " Set ";
                while(iterator.hasNext()){
                        Map.Entry map = (Map.Entry)iterator.next();
                        key = (String)map.getKey();
                      value = (String)map.getValue();
                        sql.append(key+"="+value);
                        if(iterator.hasNext())sql.append(",";
                }
                if(sqlWhere != null) sql.append(" Where "+ sqlWhere);
                return sql.toString();
        }
*/

        public String Update(){
                sql = new StringBuffer(1024);
                Iterator iterator = sqlHashField.entrySet().iterator();
                sql.append("Update ";
                String key,value,swap = "";
                sql.append(getFrom()+ " Set ";
                while(iterator.hasNext()){
                        Map.Entry map = (Map.Entry)iterator.next();
                        key = (String)map.getKey();
                      value = (String)map.getValue();
                     
                        if(iterator.hasNext()){
                                swap = ","+key+"="+value + swap;       
                        }else{
                                swap = key+"="+value + swap;       
                        }
                }
                sql.append(swap);
                if(sqlOrder != null) sql.append(" Where "+ getWhere());
                return isError?ERROR+sql.toString():sql.toString();
        }

        public String Insert(){
                sql = new StringBuffer(1024);
                Enumeration enumer = sqlHashField.keys();
                sql.append("Insert Into ";
                String key = "", value = "";
                sql.append(getFrom()+ "(";
                sqlHashField.size();
                while(enumer.hasMoreElements()){
                      String tmp = (String)enumer.nextElement();
                        if(enumer.hasMoreElements()){
                                key = "," + tmp + key;
                                value = ","+ sqlHashField.get(tmp) +value;
                        }else{
                                key = tmp + key;
                                value = sqlHashField.get(tmp) + value;
                        }
                       
                       
                }
                sql.append(key);               
                sql.append(") value(");
                sql.append(value);
                sql.append(")");
               
                return isError?ERROR+sql.toString():sql.toString();
        }

        public static void main(String[] args) {
                // TODO: Add your code here
                Database db = new Database();
                db.add("id");
                db.add("name");
                db.add("company");
                db.add("pages");
       
                db.put("id","1");
                db.put("name","netkiller");
                db.put("company","none");
                db.put("number","10");
                db.put("tel","0755-1234666");
                db.put("fax","0755-2556888");

                db.setFrom("ctoc.test");
                //db.setWhere("chen = chen");
                db.setOrder("id");
                db.setGroup("name");
                db.setLimit(10);
                db.setOffset("0");
                               
                String sql = db.Select();
                System.out.println(sql);
                System.out.println(db.Delete());
                System.out.println(db.Update());
                System.out.println(db.Insert());
               

        }
       
}

论坛徽章:
0
6 [报告]
发表于 2004-03-04 16:10 |只看该作者

在如果SQL里有引号,应该怎么处理?

谢谢,各位,已经解决。但觉得还是比较麻烦,呵呵。

论坛徽章:
0
7 [报告]
发表于 2004-03-05 15:01 |只看该作者

在如果SQL里有引号,应该怎么处理?

原帖由 "netkiller" 发表:
{
                // TODO: Add your code here
                Database db = new Database();
                db.add("id";
                db.add("name";
                db.add("company";
                db.add("pages";
       
                db.put("id","1";
                db.put("name","netkiller";
..........


8错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP