Java 1.8正在接收Optional类,它允许我们明确说明方法何时可以返回空值并"强制"其使用者isPresent()在使用它之前验证它是否为null().
我看到C#有Nullable,它做了类似的事情,但有基本类型.它似乎用于数据库查询,以区分值何时存在,并且当它不存在时为0并且为空.
但似乎C#的Nullable不适用于对象,仅适用于基本类型,而Java的Optional仅适用于对象而不适用于基本类型.
在C#中是否有Nullable/Optional类,这迫使我们在提取和使用它之前测试对象是否存在?
我知道Session.save()持续存在瞬态对象.而且我看到它也有saveOrUpdate(),而且persist().
那我觉得那save()相当于SQL INCLUDE,是吗?
如果我有一个已存在于DB上的对象,save()那么它是否会包含另一行,是否会更新其字段,还是会被忽略而没有任何反应?
我有这样的情况:
Table1 has a list of companies.
Table2 has a list of addresses.
Table3 is a N relationship of Table1 and Table2, with fields 'begin' and 'end'.
Run Code Online (Sandbox Code Playgroud)
由于公司可能会随着时间的推移而移动,因此其中的LEFT JOIN会为每家公司带来多条记录.
begin和end字段永远不会为NULL.找到最新地址的解决方案是使用a ORDER BY being DESC,并删除旧地址是一个LIMIT 1.
如果查询只能带来一家公司,那该工作正常.但我需要一个查询,它带来所有Table1记录,并与当前的Table2地址相连接.因此,必须在LEFT JOIN的ON子句中删除过时的数据(AFAIK).
知道如何构建条款不创建重复的Table1公司并带来最新地址吗?
postgresql sql-order-by left-join foreign-key-relationship duplicate-removal
当我们创建PreparedStatement时,我们使用'?' 然后用设置的参数替换字符.
在设置这些参数后,我们如何看到最终的SQL字符串?
我来自Java经验,我试图从C#开始.我已经阅读了SqlConnection SqlCommand SqlDataReader IDisposable,我可以理解连接到数据库的最佳做法是包装SqlConnection,SqlCommand并SqlDataReader在他们自己的using块中.
但在Java中,我们使用将连接封装到工厂方法中,只创建一次,并将其重用于所有查询,甚至是多线程查询.仅为每个查询创建语句和结果集,并尽快关闭.
是不是SqlConnection为每个查询创建一个新的有点矫枉过正?不能重复使用吗?
我正在开发一个PHP和Java的小应用程序.它有一些图片,CSS和JS,必须在两者中共享.
我不希望这些文件重复,JS和CSS在两者中都必须相同.所以我喜欢这样,当我在一个地方改变它时,改变将被复制到另一个地方.
在Unix中,我们有符号链接,因此相同的文件/文件夹可以"存在"在文件系统中的多个位置.在Subversion中我们有svn copy,但是一旦它被执行,两个副本就变得独立了.我希望将它们保持在一起,在一个副本中完成的提交也将应用于"其他".
知道怎么做吗?
我有一个带有IIS 8.5的Windows Server 2012 R2和另一个带有MSSQL 2012的服务器.我必须在IIS中安装PHP并连接到MSSQL,我没有可用于Web PI的Internet.
我设法安装PHP 5.5,我能够运行phpinfo(),我也保证php.ini正在加载C:\php\php.ini.
我还能够加载sqlsrv驱动程序,它在示例中报告sqlsrv.ClientBufferMaxKBSize 10240 10240.
但是当我执行连接到DB的php文件时,我收到一条消息
此扩展需要SQL Server的ODBC驱动程序11.访问以下URL以下载适用于x86的SQL Server的ODBC驱动程序11:http://go.microsoft.com/fwlink/?LinkId = 163712
我去了那个网站,它说
驱动程序3.1版支持的操作系统包括Windows Server 2012 R2`.
它说
版本3.1要求SQL Server的Microsoft ODBC驱动程序11(或更高版本)
and points tohttp://www.microsoft.com/en-us/download/details.aspx?id= 36434`.
在该页面的"系统要求"中,未列出WinServer 2012 R2.当我尝试安装时,msodbcsql.msi我收到消息
安装此产品失败,因为此操作系统不支持此产品.有关支持的配置的信息,请参阅产品文档
好吧,我现在卡住了.我需要在WinServer 2012 R2和IIS 8.5连接到MSSQL 2012的PHP.但它的驱动程序需要ODBC 11,它似乎不支持最新的WinServer.
有没有希望,还是我需要等待微软在自己的驱动程序中支持自己的操作系统?
我进行了涉及LAG()的以下计算:
(lag(fValue,1,fValue) OVER (PARTITION BY Cluster ORDER BY iSequence) + fValue) / 2 as fValueAjusted
它取前一个(基于iSequence)记录的fValue,与当前记录之和,然后除以2。
但是,必须使用先前记录的fValueAjusted来执行此操作,而不是使用fValue。
这意味着第一条记录的fValueAjusted将是其自己的fValue。第二条记录的fValueAjusted将基于第一条记录的fValue。并且,从第三条记录开始,将基于前一条记录的fValueAjusted进行计算。
我需要对上一条记录的fValueAjusted进行递归计算的fValueAjusted。我不知道该怎么做。
更新1:这是源数据的示例。实际表具有数百条记录和80个群集。
CREATE TABLE dbo.example (
iUnity int NOT NULL,
Cluster char(2) NOT NULL,
fValue float NOT NULL
)
15 A1 150
17 A1 170
21 B2 210
23 B2 230
71 C3 710
Run Code Online (Sandbox Code Playgroud)
这是计算顺序的CTE:
WITH cteSequencing AS (
SELECT
iUnity,Cluster
,fValue as fValueOriginal
,row_number() OVER (PARTITION BY Cluster ORDER BY fValueOriginal) as iSequence
FROM dbo.example
)
Run Code Online (Sandbox Code Playgroud)
如果将基于fValueOriginal计算fValueAjusted,则查询将类似于:
SELECT
iUnity,Cluster,fValueOriginal
,(
lag(fValue,1,fValue) …Run Code Online (Sandbox Code Playgroud) 我有 2 个表,TableA 和 TableB。TableB 有一个指向 TableA 的 fk 字段。
我需要对 TableA 使用 DELETE 语句,当其中的一条记录被删除时,我需要删除 TableB 中与 TableA 中该记录相关的所有记录。很基本。
begin;
DELETE FROM TableB
WHERE nu_fornecedor = $1;
DELETE FROM TableA
WHERE nu_fornecedor = $1;
commit;
Run Code Online (Sandbox Code Playgroud)
此字符串传递给 pg_prepare(),但随后出现错误
ERROR: cannot insert multiple commands into a prepared statement
好的,但是我需要在同一个事务中运行这两个命令,我不能执行 2 个分开的语句。我尝试在没有开始提交的情况下使用 with 并得到同样的错误。
知道怎么做吗?
我正在使用http://spnego.sourceforge.net/spnego_tomcat.html教程尝试将Tomcat配置为使用spnego。
Hello_KDC.java工作正常,并且能够进行身份验证。如果我使用了错误的密码,则会收到错误Exception,因此它可以正常工作。
但是,当我尝试将该教程用于Tomcat时,它就坏了。Tomcat ROOT / index.jsp变为空白,并且在监视时我看到它返回404。log \ host-manager.2013-02-22.log具有以下内容:
Fev 22, 2013 1:39:03 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter SpnegoHttpFilter
javax.servlet.ServletException: javax.security.auth.login.LoginException: Cannot locate default realm
at net.sourceforge.spnego.SpnegoHttpFilter.init(SpnegoHttpFilter.java:198)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5309)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.security.auth.login.LoginException: Cannot locate default realm
at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Unknown Source) …Run Code Online (Sandbox Code Playgroud) .net ×2
c# ×2
java ×2
postgresql ×2
hibernate ×1
idisposable ×1
iis-8.5 ×1
jdbc ×1
jgss ×1
kerberos ×1
lag ×1
left-join ×1
nullable ×1
odbc ×1
optional ×1
php ×1
php-5.5 ×1
recursion ×1
spnego ×1
sql-order-by ×1
sql-server ×1
svn ×1
symlink ×1
tomcat ×1
transactions ×1