我一直试图弄清楚为什么下面的代码没有在我的ResultSet中生成任何数据:
String sql = "SELECT STUDENT FROM SCHOOL WHERE SCHOOL = ? ";
PreparedStatement prepStmt = conn.prepareStatement(sql);
prepStmt.setString(1, "Waterloo");
ResultSet rs = prepStmt.executeQuery();
Run Code Online (Sandbox Code Playgroud)
另一方面,以下运行正常:
String sql = "SELECT STUDENT FROM SCHOOL WHERE SCHOOL = 'Waterloo' ";
PreparedStatement prepStmt = conn.prepareStatement(sql);
ResultSet rs = prepStmt.executeQuery();
Run Code Online (Sandbox Code Playgroud)
SCHOOL的数据类型为CHAR(9字节).我也尝试过:而不是setString:
String sql = "SELECT STUDENT FROM SCHOOL WHERE SCHOOL = ? ";
PreparedStatement prepStmt = conn.prepareStatement(sql);
String school = "Waterloo";
Reader reader = new CharArrayReader(school.toCharArray());
prepStmt.setCharacterStream(1, reader, 9);
prepStmt.setString(1, "Waterloo");
ResultSet rs = prepStmt.executeQuery();
Run Code Online (Sandbox Code Playgroud)
我完全坚持接下来要调查的内容; …
有没有办法约束一个列(比如说"ID")来跟随一个创建的序列(比如"ID_SEQ")?
如果没有自动约束,手动插入可能会使整个序列失控.可以做些什么来解决这个问题?只需拨打NextVal两次?
...最好是用Java.这是我有的:
//x choose y
public static double choose(int x, int y) {
if (y < 0 || y > x) return 0;
if (y == 0 || y == x) return 1;
double answer = 1;
for (int i = x-y+1; i <= x; i++) {
answer = answer * i;
}
for (int j = y; j > 1; j--) {
answer = answer / j;
}
return answer;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法来做到这一点?