我有一个.jsp页面,我有一个显示Oracle数据库记录的GUI表.该表允许典型的分页行为,例如"FIRST","NEXT","PREVIOUS"和"LAST".记录是从执行SQL语句返回的Java ResultSet对象中获取的.
这个ResultSet可能非常大,所以我的问题是:
如果我有一个包含一百万条记录的ResultSet但我的表只显示ResultSet中前十条记录中的数据,那么只有当我开始请求记录数据时才会获取数据,或者一旦ResultSet将所有数据完全加载到内存中从执行SQL语句返回?
我试图通过以下方式获得结果集的行数:
rs.last();
int row_count = rs.getRow();
Run Code Online (Sandbox Code Playgroud)
但我得到一个Invalid operation for forward only resultset : last
错误.结果集从Oracle 10g数据库获取其数据.
这是我如何设置我的连接:
Class.forName("oracle.jdbc.driver.OracleDriver");
String connectionString = "jdbc:oracle:thin:@" + oracle_ip_address + ":" + oracle_db_port + ":" + oracle_db_sid;
Connection conn = DriverManager.getConnection(connectionString, oracle_db_username, oracle_db_password);
Run Code Online (Sandbox Code Playgroud) 我正在制作一个箭袋情节:
[x,y] = meshgrid(0:0.2:2,0:0.2:2);
u = cos(x).*y;
v = sin(x).*y;
figure
quiver(x,y,u,v)
Run Code Online (Sandbox Code Playgroud)
我希望箭头被填满(即 并不是
)
从文档中,使用它应该非常简单
quiver(...,LineSpec,'filled')
Run Code Online (Sandbox Code Playgroud)
但是,我仍然无法弄清楚正确的语法 - 这些不起作用:
quiver(x,y,u,v,'LineWidth','filled');
quiver(x,y,u,v,'LineWidth',1,'filled');
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
编辑:使用行说明符执行以下操作:
quiver(x,y,u,v) %Original
Run Code Online (Sandbox Code Playgroud)
quiver(x,y,u,v,'-sk','filled') %With line specifiers
Run Code Online (Sandbox Code Playgroud)
我正在使用MATLAB调用的JDBC访问PostGreSQL 8.4数据库.我感兴趣的表基本上由不同数据类型的各列组成.他们通过他们的时间戳选择.
由于我想检索大量数据,我正在寻找一种比现在更快的方式来提出请求.
我现在正在做的是:首先我建立一个与数据库的连接并调用它DBConn
.下一步是准备一个Select语句并执行它:
QUERYSTRING = ['SELECT * FROM ' TABLENAME '...
WHERE ts BETWEEN ''' TIMESTART ''' AND ''' TIMEEND ''''];
QUERY = DBConn.prepareStatement(QUERYSTRING);
RESULTSET = QUERY.executeQuery();
Run Code Online (Sandbox Code Playgroud)
然后我将columntypes存储在变量COLTYPE中(1表示FLOAT
,-1表示BOOLEAN
,0表示其余部分 - 几乎所有列都包含FLOAT
).下一步是逐列处理每一行,并通过相应的方法检索数据.FNAMES
包含表的字段名.
m=0; % Variable containing rownumber
while RESULTSET.next()
m = m+1;
for n = 1:length(FNAMES)
if COLTYPE(n)==1 % Columntype is a FLOAT
DATA{1}.(FNAMES{n})(m,1) = RESULTSET.getDouble(n);
elseif COLTYPE(n)==-1 % Columntype is a BOOLEAN
DATA{1}.(FNAMES{n})(m,1) = RESULTSET.getBoolean(n);
else
DATA{1}.(FNAMES{n}){m,1} = char(RESULTSET.getString(n));
end …
Run Code Online (Sandbox Code Playgroud) 在MATLAB会话期间,get(0,'screensize')
首先给出正确的分辨率.稍后,答案将成为现实[0 0 1 1]
.这种行为只会在我重新启动matlab时停止,然后再次返回正确的值.
当我运行程序的特定部分时,总会发生此错误.它似乎发生在这个特定的代码行之后:
set(0,'PointerLocation',[.4*GUI.scrsz(3),.5*GUI.scrsz(4)],'units','normalized');
Run Code Online (Sandbox Code Playgroud)
即使我设法隔离错误,我也无法弄清楚这种行为的原因.我在Windows 7 64bit上使用MATLAB R2010b.
请注意,我不是MATLAB的高级用户,所以如果我忽略了一些明显的东西,请原谅我.请提前感谢您的帮助.
jdbc ×3
matlab ×3
java ×2
resultset ×2
database ×1
oracle ×1
plot ×1
postgresql ×1
properties ×1
sql ×1