我想听听你对两个控制提供商的看法.
简而言之:我正在构建一个经典的LOB桌面应用程序.该应用程序将完全在WPF中创建.PRISM 4.0将被大量使用.只要有可能,我将尝试遵循MVVM模式(如果选择的控件设计为容易采用它将会很好).
主要是我感兴趣的是:
良好的数据网格,支持排序,过滤,分组,导出,打印和大量绑定记录(10k +)
Combobox支持过滤和自动完成.
导航栏
布局管理器与VS 2010使用的布局管理器类似
从长远来看,我也想用他们的:
报告工具
"数据挖掘"控件
本地化支持,以便本地化数据网格操作,例如,..
我已经使用Winforms Devxpress一段时间了,我非常满意.他们的支持团队很棒.不过,我想检查市场上是否有更好的选择.换句话说,我想知道Telerik的控件是否有任何额外的价值?
我不太明白dbms_lob.createtemporary()函数.怎么:
DECLARE
myclob CLOB;
BEGIN
myclob := 'foo';
END;
Run Code Online (Sandbox Code Playgroud)
任何不同于:
DECLARE
myclob CLOB;
BEGIN
dbms_lob.createtemporary( myclob, TRUE );
myclob := 'foo';
dbms_lob.freetemporary( myclob );
END;
Run Code Online (Sandbox Code Playgroud)
我假设创建和免费调用之间的操作使其相关,但我只是不清楚如何.
当我尝试在SQL*Plus中显示LOB(大对象)列的内容时,它会被截断.我如何展示整件事?
我现在正在玩WPF,现在我想知道典型数据条目窗口的布局是什么(20多个文本框和内容).
atm我正在使用这样的网格对象(基本样本)
<Grid Margin="2,2,2,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions >
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0">Vorname:</Label>
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Path=Surname, UpdateSourceTrigger=PropertyChanged}" ></TextBox>
<Label Grid.Row="1" Grid.Column="0">Nachname:</Label>
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Path=ChristianName, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Label Grid.Row="2" Grid.Column="0">Strasse (Wohnsitz):</Label>
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Path=Street1, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Label Grid.Row="3" Grid.Column="0">Ort (Wohnsitz):</Label>
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding Path=Town1, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Label Grid.Row="4" Grid.Column="0">Postleitzahl (Wohnsitz):</Label>
<TextBox Grid.Row="4" Grid.Column="1" Text="{Binding Path=PostalCode1, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<Label Grid.Row="5" …Run Code Online (Sandbox Code Playgroud) 关于这个谷歌搜索有很多人可以找到,但我还没有找到一个可行的解决方案来解决这个问题.
基本上我所拥有的是一个特定类的大型CLOB,我希望按需加载它.这种天真的方式是:
class MyType {
// ...
@Basic(fetch=FetchType.LAZY)
@Lob
public String getBlob() {
return blob;
}
}
Run Code Online (Sandbox Code Playgroud)
这虽然不起作用,显然是因为我使用的是oracle驱动程序,即Lob对象不被视为简单的句柄,但总是被加载.或者我已经被引导相信我的想法.有一种解决方案使用特殊的工具来进行延迟属性加载,但是由于Hibernate文档似乎表明他们对使这项工作正确无益,所以我宁愿不去那条路.特别是必须运行额外的编译通道和所有.
因此,我设想的下一个解决方案是将此对象分离为另一种类型并定义关联.不幸的是,虽然文档提供了相互矛盾的信息,但很明显,延迟加载对OneToOne与共享主键的关联不起作用.我将关联的一方设置为ManyToOne,但是当有共享主键时,我不太确定如何执行此操作.
所以有人能提出最好的解决方法吗?
我无法在PostgreSQL 8.4中使用Hibernate 3.6.10将特殊字符(例如欧元符号(€))写入LOB字符串属性.
我所知道的是PostgreSQL提供了两种不同的方法来将大字符对象存储在表的一列中.它们可以直接存储到该表列中,也可以间接存储在单独的表中(实际上称为pg_largeobject).在后一种情况下,该列保存对pg_largeobject中行的引用(OID).
Hibernate 3.6.10中的默认行为是间接OID方法.但是,可以在Lob属性中添加额外的注释@ org.hibernate.annotations.Type(type ="org.hibernate.type.TextType")以获取直接存储行为.
两种方法都可以正常工作,除了我想要使用特殊字符(如欧元符号(€))的那一刻.在这种情况下,直接存储机制继续工作,但间接存储机制中断.
我想以一个例子来证明这一点.我创建了一个带有2个@Lob属性的测试实体.一个遵循直接存储原则,另一个遵循间接存储:
@Basic
@Lob
@Column(name = "CLOB_VALUE_INDIRECT_STORAGE", length = 2147483647)
public String getClobValueIndirectStorage()
Run Code Online (Sandbox Code Playgroud)
和
@Basic
@Lob
@org.hibernate.annotations.Type(type="org.hibernate.type.TextType")
@Column(name = "CLOB_VALUE_DIRECT_STORAGE", length = 2147483647)
public String getClobValueDirectStorage()
Run Code Online (Sandbox Code Playgroud)
如果我创建一个实体,使用欧元符号填充这两个属性,然后将其保存到数据库中当我执行SELECT时看到以下内容我看到
id | clob_value_direct_storage | clob_value_indirect_storage
----+---------------------------+----------------------------
6 | € | 910579
Run Code Online (Sandbox Code Playgroud)
如果我然后查询表pg_largeobject我看到:
loid | pageno | data
--------+--------+------
910579 | 0 | \254
Run Code Online (Sandbox Code Playgroud)
pg_largeobject的'data'列的类型为bytea,这意味着信息存储为原始字节.表达式'\ 254'表示一个单字节,而UTF-8表示字符'¬'.这正是我从数据库加载实体时得到的值.
UTF-8中的欧元符号由3个字节组成,因此我希望'data'列有3个字节而不是1个字节.
这不仅适用于欧元符号,也适用于许多特殊字符.这是Hibernate中的问题吗?还是JDBC驱动程序?有没有办法可以调整这种行为?
在此先感谢,
亲切的问候,
Franck de Bruijn
我正在使用JDBC(使用最新的驱动程序和UCP作为DataSource)对Oracle 10g运行查询,以便检索CLOB(平均20k字符).然而,性能似乎非常糟糕:批量检索100个LOB平均需要4个.从我的观察来看,该操作既不是I/O也不是CPU,也不是网络约束.
我的测试设置如下:
PoolDataSource dataSource = PoolDataSourceFactory.getPoolDataSource();
dataSource.setConnectionFactoryClassName("...");
dataSource.setConnectionPoolName("...");
dataSource.setURL("...");
dataSource.setUser("...");
dataSource.setPassword("...");
dataSource.setConnectionProperty("defaultRowPrefetch", "1000");
dataSource.setConnectionProperty("defaultLobPrefetchSize", "500000");
final LobHandler handler = new OracleLobHandler();
JdbcTemplate j = new JdbcTemplate(dataSource);
j.query("SELECT bigClob FROM ...",
new RowCallbackHandler() {
public void processRow(final ResultSet rs) throws SQLException {
String result = handler.getClobAsString(rs, "bigClob");
}
});
}
Run Code Online (Sandbox Code Playgroud)
我尝试了获取大小但无济于事.难道我做错了什么?有没有办法在使用JDBC时加快CLOB检索?
以下查询可用于列出用户的数据库对象:
select object_name, object_type from user_objects;
Run Code Online (Sandbox Code Playgroud)
有几个条目,其中object_type是LOB.
如何在Oracle中删除这些LOB对象?
我在 Hibernate 中使用 JPA。我有一个带有@Lob属性的实体
@Column(nullable=false)
@Lob
private String text;
Run Code Online (Sandbox Code Playgroud)
我正在使用 PostgreSQL 8.4 并且实体与列正确映射
"text" text NOT NULL
Run Code Online (Sandbox Code Playgroud)
我的视图页面使用 UTF-8 编码,我的 URL 连接也使用正确的编码:
<property name="url" value="jdbc:postgresql://myhostip:port/mydb?useUnicode=yes&characterEncoding=UTF-8" />
Run Code Online (Sandbox Code Playgroud)
另外,我在posgreSQL上的 client_encoding 是Unicode(使用查询工具)或UTF-8(使用 psql)。
虽然我可以读取/保留数据,但当我显示它时,会出现一些编码问题,例如显示 ??。
另一个信息是,在同一个实体上,我有另一个String属性,可以正确显示 @Lob 属性的相同内容。
我还将psql 中的text属性导出到test.txt文件中,内容正常。
我在持久化(调试)之前测试了该属性的值,并且该值是正确的。