C# 更改字符串声明时出现奇数错误

C# 更改字符串声明时出现奇数错误,c#,.net,debugging,C#,.net,Debugging,我声明的字符串基本上是一个指示符列表,其中yy是字母,xxxx是数字 string sMyString = "('yy-xxxx','yy-xxxx','yy-xxxx','yy-xxxx','yy-xxxx','yy-xxxx')"; if(File.Exists(sFileLocation + sFileName)) { txtRunning.Text = "Starting db copy"; File.Copy(sFileLocation + sFileName, sF

我声明的字符串基本上是一个指示符列表,其中yy是字母,xxxx是数字

string sMyString = "('yy-xxxx','yy-xxxx','yy-xxxx','yy-xxxx','yy-xxxx','yy-xxxx')";

if(File.Exists(sFileLocation + sFileName))
{
    txtRunning.Text = "Starting db copy";
    File.Copy(sFileLocation + sFileName, sFileName, true);
    File.Copy(sDbLocation + "clipper.dbf", "clipper.dbf", true);
    File.Copy(sDbLocation + "clipper.dbt", "clipper.dbt", true);

    txtRunning.Text = "Starting datatable population";
    string connString = @"Provider=VFPOLEDB;Data source=.\clipper.dbf";
    string mySelectQuery = "SELECT UPPER(TRIM(field1))," +
        " UPPER(TRIM(field2)), UPPER(TRIM(field3)), UPPER(TRIM(field4))" +
        " FROM `clipper` WHERE condition1 AND field1 IN " + sMyString +
        " ORDER BY field2;";

    DataTable dtClipper = new DataTable();
    DataTable dtNotFound = new DataTable();
    DataTable dTable = new DataTable();

    OleDbConnection conn = new OleDbConnection(connString);
    OleDbDataAdapter adapter = new OleDbDataAdapter();
    adapter.SelectCommand = new OleDbCommand(mySelectQuery, conn);
    adapter.Fill(dtClipper);
}
如果去掉参数,则dataadapter.fill命令中会出现错误,表示该函数不存在。如果我将其更改为字符串文字,无论是否使用paren,都会得到相同的错误。若我让它保持原样,使用paren和单引号,它运行得很好


我需要它只是一个列表,没有单引号,因为我要将它们添加到字典中用作关联计数器。我缺少的是什么?

该错误是因为您正在使用该字符串运行SQL查询,并且没有引号和括号,它是无效的SQL

您需要保留引号和括号,以便SQL查询能够工作。如果您还需要以普通字符串的形式访问列表,则将其存储为列表

List<string> myStrings = new List<String> {
    "yy-xxxx",
    "yy-xxxx",
    "yy-xxxx",
    "yy-xxxx",
    "yy-xxxx",
    "yy-xxxx"
};
string myStringsForSQL = string.Join(myStrings, "','");

string mySelectQuery = "SELECT UPPER(TRIM(field1)), " +
    "UPPER(TRIM(field2)), UPPER(TRIM(field3)), UPPER(TRIM(field4)) " +
    "FROM `clipper` WHERE condition1 AND field1 IN ('" + myStringsForSQL + "') " +
    "ORDER BY field2;";
List myStrings=新列表{
“yy xxxx”,
“yy xxxx”,
“yy xxxx”,
“yy xxxx”,
“yy xxxx”,
“yy xxxx”
};
字符串myStringsForSQL=string.Join(myStrings,“,”);
字符串mySelectQuery=“选择上部(修剪(字段1)),”+
‘上部(阀内件(现场2)),上部(阀内件(现场3)),上部(阀内件(现场4))’+
“来自'clipper',其中条件1和字段1位于('“+myStringsForSQL+”)”+
“现场命令2;”;

请包括实际产生错误的相关代码行。Ie,
dataadapter.fill()
@gilly3-已添加。如果我保留了所有单引号和括号,那么即使将其声明为字符串文字,只要我去掉其中任何一个,我也会得到错误。我不明白你为什么要去掉单引号或括号。你认为不需要它们的依据是什么?这两种方法看起来都很合适,因为我把它们分成了一个字典,所以我可以用字典作为关联计数器。当我这样做的时候,当我在字典中搜索xx-yyyy的键时,我没有找到匹配项,而它在字典中是“xx-yyy”。啊,我是个白痴。不要介意。我把它添加到我的SQL命令中时,我完全忘记了。是的,我在随后的编辑中注意到了这一点。我在sql构建中添加了paren,而不是字符串,当我从中创建字典时,我只是使用regex来去掉单引号。:/尽管如此,我还是喜欢你的解决方案。我还在学习,我没有想到一个清单。