小编Lou*_*Lou的帖子

“INSERT INTO 语句中的语法错误”错误 - 错误是什么?

我不确定这个错误可能来自哪里。

我正在使用 VB.NET 将数据插入到 MS Access 2016 中。我能够执行其他 SQL 查询没问题,但是这个查询返回Syntax error in INSERT INTO statement错误:

sql = "INSERT INTO Sense_Translation (SenseFK, LanguageCode, Translation) VALUES (?, ?, ?)"

cmd = New OleDbCommand(sql, myConnection)
cmd.Parameters.Add(New OleDbParameter("SenseFK", senseID))
cmd.Parameters.Add(New OleDbParameter("LanguageCode", lcodeID))
cmd.Parameters.Add(New OleDbParameter("Translation", tr.Translation))

Try
    cmd.ExecuteNonQuery()
    cmd.Dispose()
Catch ex As Exception
    MsgBox(ex.Message)
End Try
Run Code Online (Sandbox Code Playgroud)

我已经检查并仔细检查了 Access 和 VB.NET 中的表名是否匹配,参数是否匹配,以及参数在 SQL 语句和 Parameters.Add(我什至不确定后者是否重要,我只是为了以防万一。)

我还检查了传递给参数的类型是否匹配 -senseID是数字、lcodeID是数字tr.Translation还是字符串,与表匹配。尽管如果它是类型不匹配,我预计错误无论如何都会有所不同。

只是为了比较,当我执行下面的代码时,并没有返回错误:

sql = "INSERT INTO Sense (EntryFK, SenseInformation) …
Run Code Online (Sandbox Code Playgroud)

sql vb.net ms-access syntax-error sql-insert

0
推荐指数
1
解决办法
110
查看次数

删除前导空格在 Bash 中不起作用

我在 Bash 中有一个字符串,它可能以也可能不以任意数量的前导空格开头,例如

"  foo bar baz"
" foo bar baz"
"foo bar baz"
Run Code Online (Sandbox Code Playgroud)

我想从字符串中删除“foo”的第一个实例,以及任何前导空格(可能没有)。

按照这个问题的建议,我尝试了以下方法:

str=" foo bar baz"
regex="[[:space:]]*foo"
echo "${str#$regex}"
echo "${str#[[:space:]]*foo}"
Run Code Online (Sandbox Code Playgroud)

如果 str 有一个或多个前导空格,那么它将返回我想要的结果,即_bar baz(下划线 = 前导空格)。如果字符串没有前导空格,则不会执行任何操作并返回foo bar baz. 两个“回声”在这里返回相同的结果。

我的理解是使用*after[[:space:]]应该匹配零个或多个 [[:space:]] 实例,而不是一个或多个。我在这里错过了什么或做错了什么?

编辑

@Raman - 我尝试了以下方法,但它们也不起作用:

echo "${str#[[:space:]]?foo}"
echo "${str#?([[:space:]])foo}"
echo "${str#*([[:space:]])foo}"
Run Code Online (Sandbox Code Playgroud)

无论是否有尾随空格,所有三种解决方案都不会删除 'foo'。唯一可行的解​​决方案是我用星号发布的解决方案 - 当有尾随空格时它会删除 'foo',但没有时则不会。

string bash removing-whitespace parameter-expansion

0
推荐指数
1
解决办法
74
查看次数

有没有办法仅使用 Golang Glob 列出目录?

Golang Glob 的行为并不符合我的预期。假设我有一个目录“foo”,其结构如下:

foo
|-- 1.txt
|-- 2.csv
|-- 3.json
|-- bar
`-- baz
Run Code Online (Sandbox Code Playgroud)

我想做一个仅获取 foo 中的目录“bar”和“baz”的 glob。所以我尝试这个:

path = "foo/*/"
matches, err := filepath.Glob(path)
if err != nil {
    log.Fatal(err)
}
fmt.Println(matches)
Run Code Online (Sandbox Code Playgroud)

这不会产生任何匹配项:

[]
Run Code Online (Sandbox Code Playgroud)

如果我删除最后一个尾部斜杠并将路径更改为"foo/*",我会同时得到文件和目录,这不是我想要的结果:

[foo/1.txt foo/2.csv foo/3.json foo/bar foo/baz]
Run Code Online (Sandbox Code Playgroud)

我希望如果存在尾部斜杠,Glob 将仅返回与 glob 模式匹配的目录。我看到GitHub 上注意到了同样的问题,但找不到任何解决方法 - 这听起来要么像是一个错误,要么是一个记录不充分的功能,要么只是缺乏预期的功能。

我检查了 Go 文档中 Glob 使用的 Match 函数,它没有提到任何关于尾部斜杠的内容。

所以基本上:是否有一种解决方法,以便我可以使用 Glob 仅全局访问某个路径下的目录,或者我是否需要使用另一种方法来完成此任务?

glob go

-4
推荐指数
1
解决办法
2202
查看次数

从字符串中删除单引号 - “不能使用“'”(类型无类型字符串)作为类型字节”

我有一个字符串,可能会或可能不会被双引号或单引号包围。我想删除第一组引号(如果存在)。所以:

"foo" --> foo
""foo"" --> "foo"
'foo' --> foo
'foo --> foo
Run Code Online (Sandbox Code Playgroud)

等等。

我找到了这个答案,它描述了使用切片表达式来索引字符串的第一个和最后一个字符,然后如果其中一个字符是引号,则获取字符串的一部分。所以我试图调整代码以涵盖单引号和双引号:

func stripQuotes(str string) string {
    s := str[:]
    if len(s) > 0 && (s[0] == '"' || s[0] == "'") {
        s = s[1:]
    }
    if len(s) > 0 && (s[len(s)-1] == '"' || s[len(s)-1] == "'") {
        s = s[:len(s)-1]
    }

    return s
}
Run Code Online (Sandbox Code Playgroud)

但它返回一个错误:

cannot convert "'" (type untyped string) to type byte
Run Code Online (Sandbox Code Playgroud)

所以我尝试将单引号转换为字节,但这也不起作用:

...
if len(s) > 0 && (s[0] …
Run Code Online (Sandbox Code Playgroud)

string strip go

-4
推荐指数
1
解决办法
73
查看次数