0

チェックイン方法IsNullOrEmptyRawSQL管理番号と送信者 ID の両方に値がある場合は、両方の同様の条件を確認します。送信者 ID のみの場合は、送信者 ID のみの同様の条件を確認し、管理番号のみの場合は、管理番号のみの同様の条件を確認します。のようなエラーが表示されます

* 付近の構文が正しくありません

using (var context = new BSoftWEDIIContext())
                {

                    if (!string.IsNullOrEmpty(controlNumber))
                    {
                        controlNumber = "*" + controlNumber + "*";
                    }
                    if (!string.IsNullOrEmpty(senderNumber))
                    {
                        senderNumber = "*" + senderNumber + "*";
                    }

                    var fileDetail = context.FileDetails
                        .SqlQuery("select * from FileDetails where @" + controlNumber.ToString()
                        +" is not null OR CONVERT(varchar(max), RawData) like '%" + controlNumber.ToString() 
                        + "%' AND CONVERT(varchar(max), RawData) like '%" + senderNumber.ToString()+"%'").ToList();
                    matchedFileId = fileDetail?.Select(a => a.Id).ToList();

                }
4

1 に答える 1

1

追加が多すぎて*、結果のクエリが適切に構築されていません。それに応じて状態を確認します。

using (var context = new BSoftWEDIIContext())
            {

                if (!string.IsNullOrEmpty(controlNumber))
                {
                    controlNumber = controlNumber;
                }
                if (!string.IsNullOrEmpty(senderNumber))
                {
                    senderNumber = senderNumber;
                }

                var fileDetail = context.FileDetails.SqlQuery("select * from FileDetails where " + controlNumber.ToString() + " is not null" + " OR CONVERT(varchar(max), RawData) like '%" + controlNumber.ToString() + "%' AND CONVERT(varchar(max), RawData) like '%" + senderNumber.ToString() + "%'").ToList();
                matchedFileId = fileDetail?.Select(a => a.Id).ToList();
            }

: このアプローチは SQL インジェクションを起こしやすいため、まったくお勧めできません。以下のリンクから、パラメーター化されたクエリとベスト プラクティスについてお読みください。

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/ef/how-to-execute-a-parameterized-entity-sql-query-using-entitycommand

SQLステートメントをパラメータ化されたクエリに変更するには?

于 2019-01-17T08:47:17.823 に答える