Я пытаюсь проанализировать текст команды SQL в vb. net и интегрировать его для совместимости с C#.
У меня возникают проблемы с преобразованием текста команды SQL из vb. * От 1046 * до c#.
Я использовал Telerik: http://converter.telerik.com/
и получил следующие результаты (показаны ниже). Мне было интересно, может ли кто-то, кто знаком с VB. NET и C#, помочь мне переписать полный текст команды SQL.
Исходный vb. net текст команды:
Dim r As SqlDataReader = sqlCommand.ExecuteReader()
Do While True
If r.Read() Then
SQL2 = "SELECT * from Invoices "
SQL2 = SQL2 & " WHERE Num = '" & r("Num") & "'"
conPubs2 = New SqlConnection(<ConnectionString>)
sqlCommand2 = New SqlCommand(SQL2, conPubs2)
conPubs2.Open()
Dim r2 As SqlDataReader = sqlCommand2.ExecuteReader()
Do While True
If r2.Read() Then
MsgBox(RTrim(r("Num")) & ": " & RTrim(r2("ItemID")))
Else
Exit Do
End If
Loop
Else
Exit Do
End If
Loop
conPubs.Close()
conPubs2.Close()
End Sub
Вот что я получил в C#, когда использовал онлайн-конвертер Telerik:
SqlDataReader r = sqlCommand.ExecuteReader();
while (true)
{
if (r.Read())
{
SQL2 = "SELECT * from Invoices ";
SQL2 = SQL2 + " WHERE Num = '" + r("Num") + "'";
/ * Невозможно преобразовать AssignmentStatementSyntax, ОШИБКА ПРЕОБРАЗОВАНИЯ: преобразование для XmlElement не реализовано, пожалуйста сообщить об этой проблеме в ')
sql ...' в символе 314
в ICSharpCode.CodeConverter.CSharp.VisualBasicConverter.NodesVisitor.DefaultVisit (узел SyntaxNode)
в Microsoft.CodeAnalysis.VisualBasi c .VisualBasicSyntaxVisitor 1.VisitXmlElement(XmlElementSyntax node)<br>
at Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.Accept[TResult](VisualBasicSyntaxVisitor
1 посетитель)
в Microsoft.CodeAnalysis.VisualBasi c .VisualBasicSyntaxVisitor 1.Visit(SyntaxNode node)<br>
at ICSharpCode.CodeConverter.CSharp.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)<br>
at Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor
1.VisitXmlElement (XmlElementSyntaxVisitor)
в Microsoft.CodeAnalysis.VisualBasi XmlElementSyntax.Accept [TResult] (VisualBasicSyntaxVisitor 1 visitor)<br>
at ICSharpCode.CodeConverter.CSharp.VisualBasicConverter.NodesVisitor.VisitSimpleArgument(SimpleArgumentSyntax node)<br>
at Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax.Accept[TResult](VisualBasicSyntaxVisitor
1 посетитель)
в Microsoft.CodeAnalysis.VisualBasi c .VisualBasicSyntaxVisitor 1.Visit(SyntaxNode node)<br>
at ICSharpCode.CodeConverter.CSharp.CommentConvertingNodesVisitor.DefaultVisit(SyntaxNode node)
at Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor
1.VisitSimpl eArgument (узел SimpleArgumentSyntax) в узлах Microsoft.CodeAnalysis.VisualBasi c .Syntax.SimpleArgumentSyntax.Accept [TResult] (VisualBasicSyntaxVisitor 1 visitor)
at ICSharpCode.CodeConverter.CSharp.VisualBasicConverter.NodesVisitor.<>c__DisplayClass83_0.<ConvertArguments>b__0(ArgumentSyntax a, Int32 i)
at System.Linq.Enumerable.<SelectIterator>d__5
2.MoveNext () в узлах System.Linq.Enumerable *. CodeConverter.CSharp.VisualBasicConverter.NodesVisitor.VisitArgumentList (узел ArgumentListSyntax) в Microsoft.CodeAnalysis.VisualBasi c .Syntax.ArgumentListSyntax.Accept [ICSYNTAX.ArgumentListSyntax.Accept [ICSyntax.ArgumentListSyntax. CommentConvertingNodesVisitor.DefaultVisit (узел SyntaxNode) в Microsoft.CodeAnalysis.VisualBasi c .VisualBasicSyntaxVisitor 1.VisitArgumentList(ArgumentListSyntax node)
at Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.Accept[TResult](VisualBasicSyntaxVisitor
1 посетитель) в ICSharpCode.CodeConverter.CSharp.VisualBasicConverter.CSharp.VisualBasicConverter.CSharp.VisualBasicConverter.CSharp.VisualBasicConverter.Nodes Syntax.ObjectCreationExpressionSyntax.Accept [TResult] (VisualBasicSyntaxVisitor 1 visitor)
at Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor
1.Visit (узел SyntaxNode) в ICSharpCode.CodeConverter.CSharp.CommentConv ertingNodesVisitor.DefaultVisit (узел SyntaxNode) в Microsoft.CodeAnalysis.VisualBasi c .VisualBasicSyntaxVisitor 1.VisitObjectCreationExpression(ObjectCreationExpressionSyntax node)
at Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.Accept[TResult](VisualBasicSyntaxVisitor
1 посетитель) в ICSharpCode.CodeConverter.CSharp.VisualBasicConverter.CodeConverter.CSharp.VisualBasicConverter. Syntax.AssignmentStatementSyntax.Accept [TResult] (VisualBasicSyntaxVisitor 1 visitor)
at Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor
1.Visit (узел SyntaxNode) в узле ICSharpCode.CodeConverter.CSharp.CommentConvertingMethodBodyVisitor.ConvertWithTrivia (atConvertingMethodBodyVisitor.ConvertWithTrivia) ICConvertWithTrivia (на узле SyntaxSharispode) *
Я пытаюсь, в конечном итоге, расширить другой запрос, который имеет следующий текст команды; причина, по которой мне нужно расширить его, - это возможность подсчитать общее количество строк, связанных с Num (возвращенные строки, например, если их больше 1):
dbConnection.Open();
var sqlCmd = dbConnection.CreateCommand();
sqlCmd.CommandText = @"SELECT [ItemID], [Num]
FROM [Test].[dbo].[Invoices]
WHERE Num = '" + orderNumber.ToString() + "'";