我不确定这个错误可能来自哪里。
我正在使用 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) 我在 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',但没有时则不会。
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 仅全局访问某个路径下的目录,或者我是否需要使用另一种方法来完成此任务?
我有一个字符串,可能会或可能不会被双引号或单引号包围。我想删除第一组引号(如果存在)。所以:
"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) go ×2
string ×2
bash ×1
glob ×1
ms-access ×1
sql ×1
sql-insert ×1
strip ×1
syntax-error ×1
vb.net ×1