java字符串拼接问题,求大神讲清楚

先上一个小例子再慢慢问:importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Res... 先上一个小例子再慢慢问:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class jdbctest {
private static String url="jdbc:mysql://localhost:3306/myschool";
private static String user="root";
private static String pwd="root";
private static Connection con=null;
private static Statement stmt=null;
private static ResultSet rs=null;
private static String sql=null;
private static String selkey=null;
public synchronized Connection getConnection(){
try {
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection(url, user, pwd);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
public void closeAll(){

try {
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(con!=null){
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void insertMothod(String sql){
con=getConnection();
try {
stmt=con.createStatement();
stmt.execute(sql);
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeAll();
}
}
public void selMothod(String selkey){
con=getConnection();
try {
stmt=con.createStatement();
rs=stmt.executeQuery("'select'"+selkey+"'from stu_info where id=1'");
if(rs!=null){
while(rs.next()){
System.out.println(rs.getString(selkey));
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeAll();
}
}
public static void main(String[] args) {
new jdbctest().selMothod("stu_name");
}
}
这是一个java连接数据库的小例子,我想问的是如何把selMothod方法中的参数,传递到rs=stmt.executeQuery("'select'"+selkey+"'from stu_info where id=1'");返回的结果集中?我这样写是不对的,求高手指点啊。我只是想让参数和字符串拼接到一起,执行Statement对象的SQL语句传递。求给一个清晰的解答。。。
展开
 我来答
西二旗码农一枚
2012-03-31
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
遇到复杂的拼接建议不要使用Statemente而是使用 java.sql.PreparedStatement这个类 也就是使用占位符来表示举个例子
String sql=“SELECT * FROM table1 where name=? and age=? ”;
PreparedStatement pstmt=conn.prepareStatement(sql) ;
pstmt.setString(1,"张三"); //设置sql里面的第一个 ? String类型
pstmt.setInt(2,23); //设置 sql里面的第二个 ?号,int类型
pstmt.executeQuery();

使用占位符可以减少sql语句发生错误,把需要用变量代替的地方都是用 ? ,然后 setXXX就可以 从 1 开始计数 注意类型
csp25485475
2012-03-31
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
rs=stmt.executeQuery("select "+selkey+" from stu_info where id=1 "); 是正解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ryh119
2012-04-01
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
sql语句有问题,应该是"select "+selkey+" from stu_info where id=1" 这里应该注意有空格 还有就是这些sql语句不用用单引号引起来。你那个在数据库里执行的是这样的语句:
'select' stu_name 'from stu_info where id=1' 这样当然不行 在数据库中就字符串才用单引号引起来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式