C# 更改字符串声明时出现奇数错误
我声明的字符串基本上是一个指示符列表,其中yy是字母,xxxx是数字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
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来去掉单引号。:/尽管如此,我还是喜欢你的解决方案。我还在学习,我没有想到一个清单。