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语句传递。求给一个清晰的解答。。。 展开
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语句传递。求给一个清晰的解答。。。 展开
3个回答
展开全部
遇到复杂的拼接建议不要使用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 开始计数 注意类型
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 开始计数 注意类型
展开全部
rs=stmt.executeQuery("select "+selkey+" from stu_info where id=1 "); 是正解。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql语句有问题,应该是"select "+selkey+" from stu_info where id=1" 这里应该注意有空格 还有就是这些sql语句不用用单引号引起来。你那个在数据库里执行的是这样的语句:
'select' stu_name 'from stu_info where id=1' 这样当然不行 在数据库中就字符串才用单引号引起来
'select' stu_name 'from stu_info where id=1' 这样当然不行 在数据库中就字符串才用单引号引起来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询