日期:2014-05-18  浏览次数:20720 次

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;