小编CJ *_*J F的帖子

Postgresql,JDBC和流式BLOB

我试图使用jdbc驱动程序从postgres数据库中检索blob.内存太大,所以我想将其作为下载流式传输.我尝试在ResultSet上使用getBinaryStream方法,但事实证明这个方法实际上将它全部读入内存,因此不适用于大文件.

显然,可以在结果集上使用getBlob方法,并且可以从blob中获取输入流并从那里开始,但这就是我遇到问题的地方.

PreparedStatement ps = con.prepareStatement("select data from file_data WHERE ID = ?");
ps.setLong(1,file.fileData.id)
ResultSet rs = ps.executeQuery()
if(rs.next()){
        rs.getBlob("data")
Run Code Online (Sandbox Code Playgroud)

那是我正在运行的代码.当它到达最后一行时,它会抛出一个我无法理解的错误......

org.postgresql.util.PSQLException:long类型的错误值:xxxxxx

"xxxxxx"然后是文件的内容.你可以想象这会很长,但不是真的.

我被困在这里 有没有人对正在发生的事情有任何想法?哎呀我甚至会采用其他方法来流式传输大blob作为下载.

java postgresql blob jdbc

20
推荐指数
2
解决办法
2万
查看次数

保存对rails中对象的更新

我正在尝试更新我的rails应用程序中的一个对象,并且更改只是不坚持.没有错误,通过调试器只是表明它认为一切都在更新.

无论如何,这是有问题的代码......

  qm = QuestionMembership.find(:first, :conditions => ["question_id = ? AND form_id = ?", q_id, form_id])
  qm.position = x
  qm.save
Run Code Online (Sandbox Code Playgroud)

为了便于参考,QuestionMembership有question_id,form_id和position字段.所有都是整数,没有数据库约束.

这基本上是我在表单和问题之间的连接表.

单步执行代码,qm获取一个有效对象,对象的位置确实变为x的值,save保存返回'true'.

但是,在退出方法后,db中的对象不会更改.

我错过了什么?

ruby ruby-on-rails

5
推荐指数
2
解决办法
1万
查看次数

使用acts_as_list和has_many:通过rails

我有一个rails应用程序我正在尝试使用acts_as_list插件设置可排序列表.数据库中的位置字段正在更新,但在呈现页面时,不会考虑订单.我想,我正在寻求帮助.

这是我的模特......

class QuestionMembership < ActiveRecord::Base
  belongs_to :form
  belongs_to :question
  acts_as_list
end

class Form < ActiveRecord::Base
  has_many :question_memberships
  has_many :questions, :through => :question_memberships
end

class Question < ActiveRecord::Base
  has_many :question_memberships
  has_many :forms, :through => :question_memberships
  acts_as_list
end
Run Code Online (Sandbox Code Playgroud)

以及给我列表的草率视图代码......

<% @form.question_memberships.each do |qm| %>
  <% q_id = "question_#{qm.id}" %>
  <li class="question" id=<%= q_id %> >
    <div style="color: #999; font-size: 8pt">
      <%=h qm.question.content %>
    </div>
  </li>
  <%= draggable_element(q_id, :revert=>true) %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

拖放适用于重新排序.位置值在DB中为QuestionMembership对象更新,页面实际上正确显示了重新排序.问题是在页面重新加载时,它默认返回到它的感觉顺序.我认为它默认为订单的问题ID而不是question_membership位置,但我不确定.

关于如何通过QuestionMembership的位置字段对初始渲染进行实际排序的任何想法?

ruby ajax ruby-on-rails

5
推荐指数
1
解决办法
5520
查看次数

在Rails中与同一个类进行多个关联的最佳实践?

我认为我的问题最好被描述为一个例子.假设我有一个名为"Thing"的简单模型,它有一些简单数据类型的属性.就像是...

Thing
   - foo:string
   - goo:string
   - bar:int
Run Code Online (Sandbox Code Playgroud)

这并不难.db表将包含三个具有这三个属性的列,我可以使用@ thing.foo或@ thing.bar等访问它们.

但是我试图解决的问题是当"foo"或"goo"不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象.也就是说,它们都只是具有不同数据的"Whazit"实例.所以现在Thing可能看起来像这样......

Thing
  - bar:int
Run Code Online (Sandbox Code Playgroud)

但现在有一个名为"Whazit"的新模型看起来像这样......

Whazit
  - content:string
  - value:int
  - thing_id:int
Run Code Online (Sandbox Code Playgroud)

到目前为止,这一切都很好.现在这里是我被困住的地方.如果我有@thing,我怎么设置它来引用我的2个Whazit实例的名称(为了记录,"业务规则"是任何Thing总是有2个Whazits)?也就是说,我需要知道我的Whazit是否基本上是foo或goo.显然,我不能在当前的设置中做@ thing.foo,但我认为这是理想的.

我最初的想法是给Whazit添加一个"name"属性,这样我就可以得到与我的@thing相关的Whatzits,然后通过这种方式选择我想要的Whazit.这看起来很难看.

有没有更好的办法?

ruby activerecord ruby-on-rails

5
推荐指数
1
解决办法
1816
查看次数

标签 统计

ruby ×3

ruby-on-rails ×3

activerecord ×1

ajax ×1

blob ×1

java ×1

jdbc ×1

postgresql ×1