PrepareStatement问题,给分速度
我数据库内容很简单:
列名|数据类型|长度
creditgradeid|tinyint|1/主键
creditgradename|varchar|20
相关内容:
creditgradeid:0|1|2|3|4|5
creditgradename:Stranger|Freshman|Familer|creditable|vip|topvip
因为有问题,所以写了个测试程序
package asd;
import java.sql.*;
public class asdf {
public static void main(String[] args) {
String url,userid,password,sqlst,col1;
Connection conet = null;
PreparedStatement pstm;
Statement stm;
ResultSet rs;
url="jdbc:odbc:market";
userid="bishidll";
password="301415926";
try {//建立连接
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conet=DriverManager.getConnection(url,userid,password);
}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
//取数据
try{//use preparedstatement first
sqlst="select ? from creditgrade";
col1="creditgradeid";
pstm=conet.prepareStatement(sqlst);
pstm.setString(1, col1);
rs=pstm.executeQuery();
while(rs.next())
System.out.println(rs.getString(1));
//这里我试过用"creditgradeid"做参数,出错“java.sql.SQLException: Column not found”
//如果用rs.getInt("creditgradeid"),还是报“java.sql.SQLException: Column not found”
//如果用rs.getInt(1)方法,就说“[Microsoft][ODBC SQL Server Driver]对于造型说明无效的字符值”
pstm.close();
//use statement then
sqlst="select creditgradeid from creditgrade";
stm=conet.createStatement();
rs=stm.executeQuery(sqlst);
while(rs.next())
System.out.println(rs.getString("creditgradeid"));
//这里呢无论用rs.getString()还是rs.getInt()都可以得到结果
}catch (SQLException e) {
e.printStackTrace();
}
}
}
这个程序结果:
creditgradeid
creditgradeid
creditgradeid
creditgradeid
creditgradeid
creditgradeid
//上面只是名字,下面就输出正确结果了
0
1
2
3
4
5
这个是为什么?
我还用其他的试了下,也一样