0
私のvb.netアプリケーションでselect query builderを開発したいと思います。ユーザーがリッチテキストボックスに "select query"を入力すると、クエリが実行され、結果がグリッド表示に表示されます。いずれにせよ、このためにサンプルアプリケーションが送信されます。アプリケーションでカスタムクエリビルダーを開発するには?
私のvb.netアプリケーションでselect query builderを開発したいと思います。ユーザーがリッチテキストボックスに "select query"を入力すると、クエリが実行され、結果がグリッド表示に表示されます。いずれにせよ、このためにサンプルアプリケーションが送信されます。アプリケーションでカスタムクエリビルダーを開発するには?
this answer on codeproject.comを見て、あなたの質問に答えるために:
SqlConnection con = new SqlConnection("Your Connection String Here");
con.Open();
SqlCommand cmdQuery = new SqlCommand("Your Query Here", con);
SqlDataReader drQuery = cmdQuery.ExecuteReader();
DataSet dsQuery = new DataSet();
DataTable dtQuery = new DataTable();
dsQuery.Tables.Add(dtQuery);
dsQuery.Load(drQuery, LoadOption.PreserveChanges, dsQuery.Tables[0]);
DataGridView1.DataSource = dsQuery.Tables[0];
推奨:ユーザーが直接SQLを入力してみましょうしないでください。セキュリティとパフォーマンスの両方の制御が緩いので、これを避けるためにできることはすべて実行する必要があります。
ユーザーが "DELETE FROM dbo.Orders"または利用可能なすべてのメモリを消費する非常に複雑なクエリを実行するとどうなりますか?
DBAや開発者にとっては、SQL Server Management Studioなどの開発ツールを使用できる必要があります。
UPDATE: はSQLを検証するための例の作業:
string sql = "SELECT * FROM Table1 AS t1 INNER JOIN Table2 AS t2 ON t1.ID = t2.ParentID";
if (System.Text.RegularExpressions.Regex.IsMatch(sql, "^SELECT([^;])$",System.Text.RegularExpressions.RegexOptions.IgnoreCase))
{
// do something
}
else
{
throw new InvalidOperationException("You're not allowed to execute nothing but SELECT-queries.");
}
これは私がすでにやったことですが、私は唯一のコマンドを「選択」し、また、ユーザーが機能を与えている実行するために、ユーザーを制限したいです結合クエリも実行します。これを手伝ってください。 – Sathish
SQLの検証方法に関する実例を使用して私の答えを更新しました。クエリは「SELECT」で始まる必要があり、含めることはできません。後でDELETEなどの追加コマンドを追加することをユーザーに制限します。 –
あなたの問題を解決した場合は、この回答に合格とマークしてください。 –