100分帮忙检查一下SQL语句正确否,谢啦!!!!!!
看看下面我的SQL语句有什么错误,数据死活都不能写入mysql 顺便问问数据不能写入的原因有那些
系统也没有报异常不知为什么就是写不进去,拜托兄弟们了
String insertSQL="INSERT INTO products(ProductId,ProductName,MarketPrice,ShopPrice,photo,Sex,Details,";
insertSQL+="Effect,Usage,Advert,Spec,Material,BrandId,BrandName,Stock,SortId,SortName,";
insertSQL+="CategoryId,CategoryName,Show,SpecialPrice,Fine,AdShow,Top)VALUES('";
insertSQL+=productId+"','"+productName+"','"+marketPrice+"','"+shopPrice+"','"+saveFileName+"','";
insertSQL+=Sex+"','"+productDetails+"','"+Effect+"','"+Usage+"','"+Advert+"','"+Spec+"','";
insertSQL+=Material+"','"+brandId+"','"+brandName+"','"+Stock+"','"+sortId+"','"+sortName+"','";
insertSQL+=categoryId+"','"+categoryName+"','"+Show+"','"+specialPrice+"','"+Fine+"','"+adShow+"','";
insertSQL+=Top+"')";
DataBase db=new DataBase();
db.executeInsert(insertSQL);
[解决办法]
你把sql用System.out.println(sql)打印出来,然后拿到数据库的执行SQL语句
如果可以执行就是你调用数据库方面出错了,不行它会提示哪出错
[解决办法]
这么多的单引号你也吃得消的啊~~~,为什么不使用 PreparedStatement 呢。
仅从这个 SQL 来看,看不出有什么问题。DataBase 里面有些什么?
[解决办法]
昏了~~~ 代码好象没什么问题
[解决办法]
打倒共匪??? -O-! 你是哪里人哇.!? 说了就给你回答
[解决办法]
是否没有提交
导致你另外的用户看不到数据
[解决办法]
SQL语句使用拼凑方式,这个可能会引发问题,例如任何一个字符串变量中包含单引号你就废了
[解决办法]
用StringBuffer不好么,相信比这个写法要快,而且清晰,
PreparedStatement 执行的话可以直接取到sql文
[解决办法]
用stringBuffer与string没有太大区别 只不过字符较多时用stringBuffer好些
把你的insertSQL打印出来 贴到数据库端执行一下就知道了
[解决办法]
楼上方法简洁,正确
[解决办法]
把你的insertSQL打印出来 贴到数据库端执行一下就知道了
[解决办法]
大哥,你怎么写的这么麻烦咯...
我帮你用一个方法写一个简单的...
public PreparedStatement getPtmt(Connection con,String tbname) throws Exception {
PreparedStatement ps = con.prepareStatement("select * from "+tbname);
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsm = rs.getMetaData();
String str = "insert into "+tbname+"(";
//insert into test(a,b) values('d','d')
for(int i=0;i<rsm.getColumnCount();i++){
str += rsm.getColumnName(i+1)+",";
}
str = str.substring(0,str.length()-1);
str +=") values( ";
for(int j=0;j<rsm.getColumnCount();j++){
str +="?,";
}
str = str.substring(0,str.length()-1);
str +=")";
System.out.println(str);
return ps;
}
[解决办法]
代码没有什么问题。。。如果有问题的话,,,也是你的调用 的类有问题。。。这里还有一点就是你的id,,如果是数值的话直接加“”就可以了。。
[解决办法]
你调试一下不就知道了,看看你的数据类型是不是都是正确的
[解决办法]
提交了吗 commit一下
[解决办法]
把insertSQL打印一下,复制出来,手动执行一下,看看是不是哪个变量里有非法字符啊.......
[解决办法]
String insertSQL="INSERT INTO products(ProductId,ProductName,MarketPrice,ShopPrice,photo,Sex,Details,";
insertSQL+="Effect,Usage,Advert,Spec,Material,BrandId,BrandName,Stock,SortId,SortName,";
insertSQL+="CategoryId,CategoryName,Show,SpecialPrice,Fine,AdShow,Top)应该是这边吧,加个空格看看 VALUES( '";
insertSQL+=productId+" ', '"+productName+" ', '"+marketPrice+" ', '"+shopPrice+" ', '"+saveFileName+" ', '";
insertSQL+=Sex+" ', '"+productDetails+" ', '"+Effect+" ', '"+Usage+" ', '"+Advert+" ', '"+Spec+" ', '";
insertSQL+=Material+" ', '"+brandId+" ', '"+brandName+" ', '"+Stock+" ', '"+sortId+" ', '"+sortName+" ', '";
insertSQL+=categoryId+" ', '"+categoryName+" ', '"+Show+" ', '"+specialPrice+" ', '"+Fine+" ', '"+adShow+" ', '";
insertSQL+=Top+" ')";
DataBase db=new DataBase();
db.executeInsert(insertSQL);
[解决办法]
还是建议在执行程序时把sql打出来 ,然后去数据库里执行一下
[解决办法]
只有System.out.println,或者debug一下,拿到最终的sql,放到plsql中执行,就看的出问题了。
主要就是类型不同,字符超标等问题。
[解决办法]
光是看都看荤菜了。。。还是建议1楼的做法。。。快捷又有效。。。
[解决办法]
长知识了 哈哈