我正在编写一个应用程序,我需要能够判断插入和更新是否成功.我正在使用"INSERT ... IF NOT EXISTS"来获得轻量级事务行为并注意到从execute返回的结果集包含一行包含更新的数据和一个可以查询的"[applied]"列.那样太好了.但是我有一个返回空ResultSet的更新语句.似乎更新成功,但我想要一种程序化的方法来验证.
澄清:
我打开了一些由我的突变返回的结果集的记录.我发现"INSERT ... IF NOT EXIST"返回一个带有名为"[applied]"的布尔列的ResultSet.如果"[applied]"为false,则还返回已退出的行.
使用UPDATE,我总是看到一个空的ResultSet.
所以我有两个问题:
这似乎是我在Linux或Windows机器上看不到的问题.我的环境设置JAVA_HOME来自/ usr/libexec/java_home.这是在我的.bashrc文件中:
export JAVA_HOME=$(/usr/libexec/java_home -version 1.7)
Run Code Online (Sandbox Code Playgroud)
这导致:
~/dev/Endeavor/endeavor-sdk$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
但是,当我在我的项目上运行Maven时,我从native2ascii插件中收到错误:
[ERROR] Failed to execute goal org.codehaus.mojo:native2ascii-maven-plugin:1.0-alpha-2-SNAPSHOT:native2ascii (default) on project dataAccessServices: Error starting Sun's native2ascii: -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
我的调查指出我使用的是JRE而不是JDK.这很奇怪,因为我清楚地指向JAVA_HOME变量中的JDK .但是,这是mvn -version的输出:
~/dev/Endeavor/endeavor-sdk$ mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 03:44:56-0500)
Maven home: /usr/share/maven
Java version: 1.7.0_17, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.7.5", arch: "x86_64", family: "mac"
Run Code Online (Sandbox Code Playgroud)
请注意,"Java home:"行表示$ {java.home}变量已移至JRE而不是JAVA_HOME …
下面的代码
package main
import "strings"
import "fmt"
type Foo string
const (
Bar Foo = "bar"
Snafu = "snafu"
Foobar = "foobar"
)
var Foos = []Foo{Bar, Snafu, Foobar}
func main() {
fmt.Println("Foos: " + strings.Join(Foos, ","))
}
Run Code Online (Sandbox Code Playgroud)
产生这个错误:
./test.go:17: cannot use Foos (type []Foo) as type []string in argument to strings.Join
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为 Foo 不是字符串,而是从字符串派生的。有没有办法在不复制的情况下将“[]Foo”强制为“[]string”?