2012-01-25 7 views
2

私はプログラミングに非常に慣れています。誰かが私にコードに関する助言を与えることを願っています。SQL文はどのように実行しますか?

基本的に、私の問題は、自分のSQL文がデータベースからデータを取得するために実行されないということです。それは、MemberOne LIKE '_'のaspnet_UsersからSELECT MemberOne FROM userPermissionsOneを割り当てます。

ご協力いただきありがとうございます。

userName = User.Identity.Name; 
userName = userName.ToUpper(); 
selectedUserName = betDropDownList.SelectedValue; 
userPermissionsOne = "SELECT MemberOne FROM aspnet_Users WHERE MemberOne LIKE '___'"; 
userPermissionsTwo = "SELECT MemberTwo FROM aspnet_Users WHERE MemberTwo LIKE '___'"; 
userPermissionsThree = "SELECT MemberThree FROM aspnet_Users WHERE MemberThree LIKE '___'"; 

if (string.Compare(userName, selectedUserName, true) == 0 || User.IsInRole("Administrator")) 
{ 
    hinzufugenButton.Enabled = true; 
    loschenButton.Enabled = true; 
    bearbeitenButton.Enabled = true; 
    betDropDownList.Enabled = true; 
} 
else if (userName == "ENL") 
{ 
    if (string.Compare(userPermissionsOne, selectedUserName, true) == 0 || 
     string.Compare(userPermissionsTwo, selectedUserName, true) == 0 || 
     string.Compare(userPermissionsThree, selectedUserName, true) == 0) 
    { 
     hinzufugenButton.Enabled = true; 
     loschenButton.Enabled = true; 
     bearbeitenButton.Enabled = true; 
    } 
    else 
    { 
     hinzufugenButton.Enabled = false; 
     loschenButton.Enabled = false; 
     bearbeitenButton.Enabled = false; 
     betDropDownList.Enabled = false; 
    } 
} 
+0

「実行する方法」を知りたいですかSQL文などが必要ですか? – adatapost

+0

実際にステートメントを実行する必要があります。http://msdn.microsoft.com/en-us/library/fksx3b4f%28v=vs.80%29.aspxと他のGoogle検索結果を参照してください "execute sql command .net"いくつかの基本情報について。 – Matten

+1

文字列を変数に代入するだけです。データベース接続を開き、SQL文字列を実行して戻り値を使用する必要があります。どのデータベースを使用していますか? – Marc

答えて

6

.NETでSQL文を実行する方法には、多くのオプションがあります。まず最初に以下を読んでください。マイクロソフトから

ADO.NETこれらは、私は通常、データベースへのアクセス方法を決定する際に考慮する最初の3つの技術です.NET内の最も直接的なデータアクセス方法を提供します フレームワーク。アプリケーションが という基本ストレージのモデルではなく概念モデルに対して動作するようにする上位レベルの抽象化については、ADO.NET Entity Frameworkを参照してください。

最近、私のデータベースアクセスの技術はDapperです。これは、高速かつ軽量であり、コード化するのに便利です。

4

あなたがデータベースとしてのSQLServerを使用していると仮定すると:

SqlCommandオブジェクトとSqlConnectionオブジェクトのクラスは、ここであなたに使用されるであろうので、私はそれらを見ているでしょう。

また、ストアドプロシージャは、セキュリティが強化され、クエリをサーバーに送信するよりもやや速く実行するための最適な方法です。保存されたprocsの利点のための簡単なgoogleはあなたをここに助けるでしょう

あなたの質問を実行する方法はいくつかあります。たとえばExecuteNonQuery()はデータを返さないsqlコマンド(挿入や削除など)を実行するだけですが、ExecuteScalarは1つの値しか返さないクエリを実行しますが、SqlCommandクラスにはかなりのメソッドがあります。

DataTableを作成し、DataAdapterを使用してテーブルを埋めるなどのオプションがあります。

私はデータベース接続コードのいくつかの例を投稿します。申し訳ありませんがVBではありますが、C#に簡単に変換できるはずです。

はまずこの

Dim dt As New DataTable 

    ' There are plenty of options you can use with the SqlConnection constructor so you can just modify this to suit your needs 
    Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("Blueprint").ToString()) 

    Dim cmd As New SqlCommand 
    cmd.CommandType = CommandType.StoredProcedure 
    cmd.CommandText = "spGetMenuItemsForTickets" 
    ' parameters could be added here by doing 
    ' cmd.parameters.addwithvalue("@ParamName",value) 
    cmd.Connection = conn 

    Using da As New SqlDataAdapter(cmd) 
    conn.Open() 
    da.Fill(dt) 
    conn.Close() 
    End Using 

データ・アダプタを使用して接続され、この文字列=文字列としては、ExecuteScalar

薄暗い名を使用した例です。空の

Dim ds As New DataTable 

    Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("Blueprint").ToString()) 

    Dim cmd As New SqlCommand 
    cmd.CommandType = CommandType.StoredProcedure 
    cmd.CommandText = "spGetUserNamesForUpdate" 
    cmd.Parameters.AddWithValue("@TicketID", TicketID) 

    cmd.Connection = conn 

    conn.Open() 

    names = cmd.ExecuteScalar() 

    conn.Close() 

これは、それはかなり同じスカラにあるのExecuteNonQueryの一例ですが、あなたはLIKE ' __ 'あなたはおそらくとしてLIKE '%__%'を行うことになるでしょうか、あなたのSQLでも返された値

 Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("Blueprint").ToString()) 

    Dim cmd As New SqlCommand 

    cmd.CommandType = CommandType.StoredProcedure 
    cmd.CommandText = "spAddFileToTicket" 

    cmd.Parameters.AddWithValue("@ticketID", TicketID) 
    cmd.Parameters.AddWithValue("@filename", Filename) 
    cmd.Parameters.AddWithValue("@filePath", Filepath) 
    cmd.Parameters.AddWithValue("@comments", Comment) 

    cmd.Connection = conn 

    conn.Open() 
    cmd.ExecuteNonQuery() 
    conn.Close() 

なし%はワイルドカードですが、どちらか一方または両方を使用できますが、または1___などの値と一致しません。

関連する問題