我从用户那里得到数据库文件的名称,我想检查该文件是否已经存在.如果确实存在,我想向用户显示错误消息,但我不知道如何检查该文件是否存在.
public static void databaseConnect(String dbName) throws Exception
{
if (/*same name exists*/) // How do I check this?
{
System.out.print("This database name already exists");
}
else
{
Class.forName("SQLite.JDBCDriver").newInstance();
conn = DriverManager.getConnection("jdbc:sqlite:/"+ dbName);
stat = conn.createStatement();
}
}
Run Code Online (Sandbox Code Playgroud) 对于许多不同的约束,我的代码可能会遇到“约束违反异常”(CVE)。为了向用户显示有意义的消息并采取特定操作,我正在String解析getMessage(). 它可以工作,但很丑陋,而且肯定不容易维护。
我想知道是否有更好的方法?这一定是一个很常见的场景;有我可以遵循的模式或最佳实践吗?
谢谢。
我一直在玩Go的XML包,但看不出以下代码有什么问题.
package main
import (
"encoding/xml"
"fmt"
"net/http"
)
type Channel struct {
Items Item
}
type Item struct {
Title string `xml:"title"`
Link string `xml:"link"`
Description string `xml:"description"`
}
func main() {
var items = new(Channel)
res, err := http.Get("http://www.reddit.com/r/google.xml")
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
decoded := xml.NewDecoder(res.Body)
err = decoded.Decode(items)
if err != nil {
fmt.Printf("Error: %v\n", err)
}
fmt.Printf("Title: %s\n", items.Items.Title)
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码运行没有任何错误,并打印到终端:
Title:
Run Code Online (Sandbox Code Playgroud)
结构似乎是空的,但我不明白为什么它没有填充XML数据.
我已将数据建模为嵌入向量.我需要找出这些向量中是否存在元素.我有以下代码,它正确地做到了.但是,我想提出一个更惯用的方法来做到这一点.
(defn exists-in-vector?
[my-vec my-sym]
(= my-sym (first my-vec)))
(defn exists-in-vectors?
[all-vectors my-symbol]
(empty? (for [first-vector all-vectors
second-vector first-vector
third-vector second-vector
:when (exists-in-vector? third-vector my-symbol)
:while (exists-in-vector? third-vector my-symbol)]
true)))
> (exists-in-vectors? [[[[:a 20] [:b :30]] [[:c 20] [:d :30]]]
[[[:h 20] [:g :30]] [[:f 20] [:e :30]]]]
:a) => true
Run Code Online (Sandbox Code Playgroud) 哇,我完全不理解这一点!
我有一个清单,L1.我想制作一份副本,L2这样,当我修改时L2,L1保持不变.我认为这copy-seq是为了什么,但它并没有像预期的那样表现.
(defun tcopy ()
(let ((seq1 nil)
(seq2 nil))
(setf seq1 (list (list 11 22) (list 33 44 55)))
(setf seq2 (copy-seq seq1))
(format t "before -- s1: ~a s2: ~a~%" seq1 seq2)
(setf (nth 1 (nth 1 seq2)) 99)
(format t "after -- s1: ~a s2: ~a~%" seq1 seq2)))
Run Code Online (Sandbox Code Playgroud)
并输出:
? (tcopy)
before -- s1: ((11 22) (33 44 55)) s2: ((11 22) (33 44 55))
after -- …Run Code Online (Sandbox Code Playgroud) 我正在学习SQL(使用SQLite 3及其sqlite3命令行工具),我注意到我可以通过多种方式做一些事情,有时候不清楚哪一个更好.这里有三个查询该做同样的事情,一是通过执行intersect,另外通过inner join和distinct,最后一个类似于第二之一,但它包含过滤通过where.(第一个是由我正在阅读的书的作者和我自己写的其他人写的.)
问题是,哪些查询更好,为什么?而且,更一般地说,我怎么知道一个查询何时比另一个更好?是否有一些我错过的指南,或者我应该学习SQLite内部,尽管SQL的声明性质?
(在下面的例子中,有一些描述在一些电视剧中提到食品名称表.Foods_episodes是许多一对多连接表,而其他同季数描述食品名称和插曲的名字连在一起.请注意,所有时间的前十名正在寻找食物(基于所有系列中出现的数量),而不仅仅是季节中的顶级食物3 ... 5)
-- task
-- find the all-time top ten foods that appear in seasons 3 through 5
-- schema
-- CREATE TABLE episodes (
-- id integer primary key,
-- season int,
-- name text );
-- CREATE TABLE foods(
-- id integer primary key,
-- name text );
-- CREATE TABLE foods_episodes(
-- food_id …Run Code Online (Sandbox Code Playgroud) 我有一个地图列表,我希望在给定某个"columnId"的情况下检索"field"的值.
(def field-to-column-mapping
[{"field" "first_name", "columnId" "1"}
{"field" "last_name", "columnId" "2"}
{"field" "phone", "columnId" "3"}])
(defn get-field-given-column [id]
((some #(if (= id (get % "columnId")) %)
field-to-column-mapping)
"field"))
;; Gets "first_name"
(get-field-given-column "1")
Run Code Online (Sandbox Code Playgroud)
这有效,但我的直觉告诉我必须有一个更清洁的方法来做到这一点.
有没有更好的方法呢?
我在Common Lisp中有这个关联列表:
(defvar base-list (list (cons 'a 0) (cons 2 'c)))
Run Code Online (Sandbox Code Playgroud)
assoc当我的论证属于类型时,我必须打电话string.
对于该对,(A . 0)我必须将"a"转换为符号,对于该对,(2 . C)我必须将"2"转换为符号.我怎样才能做到这一点?
这应该是这样的:
CL-USER 28 : 1 > (assoc (convert-string-to-symbol "a") base-list)
(A . 0)
CL-USER 28 : 1 > (assoc (convert-number-to-symbol "2") base-list)
(2 . C)
Run Code Online (Sandbox Code Playgroud)
我试过用intern但得到了NIL:
CL-USER 29 : 1 > (assoc (intern "a") base-list)
NIL
Run Code Online (Sandbox Code Playgroud) ConcurrentModificationException当我运行以下代码时,我的程序抛出.通过一些研究,我发现在迭代器循环中无法添加或删除列表中的元素.我现在该怎么做才能删除List<Bean>?
for (Iterator<Entry<String, List<Bean>>> iterator = dataMap.entrySet().iterator(); iterator.hasNext();) {
Entry<String, List<Bean>> entry = (Entry<String, List<Bean>>)iterator.next();
List<Bean> dateWiseValues = (List<Bean>) entry.getValue();
int j = 0;
for (Bean statBean : dateWiseValues) {
for (int i = 0; i < commonElements.size(); i++) {
if(statBean.getDate().equalsIgnoreCase(commonElements.get(i))) {
//remove the bean
entry.getValue().remove(j);
}
}
j++;
}
}
Run Code Online (Sandbox Code Playgroud) 在什么情况下最好返回一个对象而不是仅仅修改通过引用传递给该函数的对象?我怎么知道我应该选择哪一个?
实际上,问题是如果没有从函数返回对象的能力,而只能修改通过引用传递的对象,我是否无法做某些事情。