2012-01-25 5 views
2

저는 프로그래밍에 익숙하지 않으며, 대부분은 스스로 학습했습니다. 누군가 코드에 대한 조언을 해 줄 수 있기를 바랍니다.SQL 문을 어떻게 실행합니까?

기본적으로 내 문제는 내 SQL 문이 데이터베이스에서 데이터를 검색하기 위해 실행되지 않는다는 것입니다. 그것은 단지 MemberOne LIKE '_'과 같은 SELECT MemberOne from aspnet_Users로 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 및 "execute sql command .net"에 대한 다른 Google 결과를 참조하십시오. 몇 가지 기본 정보. – Matten

+1

문자열을 변수에 할당하는 것입니다. 데이터베이스 연결을 열고 SQL 문자열을 실행하고 반환 된 값을 사용해야합니다. 어떤 데이터베이스를 사용하고 있습니까? – Marc

답변

6

.NET으로 SQL 문을 실행하는 방법에는 많은 옵션이 있습니다. 우선 다음을 읽으십시오. Microsoft에서

:

ADO.NET이 데이터베이스에 액세스하는 방법을 결정할 때 일반적으로 고려해야 처음 세 기술입니다 .NET 내에서 가장 직접적인 데이터 액세스 방법을 제공합니다 프레임 워크. 응용 프로그램에서 기본 저장소 모델 대신 개념적 모델에 대해 에서 작동하도록 허용하는 상위 수준의 추상화에 대해서는 ADO.NET 엔터티 프레임 워크를 참조하십시오.

최근 데이터베이스 액세스를위한 저의 기술은 Dapper입니다. 그것은 빠르고, 가볍고, 코드 작성이 편리합니다.

4

당신이 당신의 데이터베이스로 SQLSERVER를 사용하는 가정 :

SqlCommand에와도록 SqlConnection 클래스가 여기에 사용 될 것입니다, 그래서 그 살펴 것이다.

또한 저장 프로 시저는 보안이 강화되어 쿼리를 서버로 보내는 것보다 약간 더 빠르게 수행 할 수있는 좋은 방법입니다. 저장된 procs의 이점에 대한 빠른 google 여기에 당신을 도울 것입니다

한가지주의 할 점은 쿼리를 실행하는 다른 방법이 있다는 것입니다. 예를 들어 SqlCommand 클래스에는 데이터가 반환되지 않는 SQL 명령 (예 : 삽입 또는 삭제) 만 ExecuteNonQuery()가 실행하는 반면 ExecuteScalar는 하나의 값만 반환하는 쿼리를 실행합니다.

DataTable을 만든 다음 DataAdapter를 사용하여 테이블을 채우는 등의 다른 옵션이 있습니다.

나는 데이터베이스 연결 코드의 몇 가지 예제를 게시 할 예정이다. 죄송합니다. VB에 있지만 C#으로 쉽게 변환 할 수 있어야합니다.

은 우선이이 문자열 = 문자열로 ExecuteScalar는

중국식 이름을 사용한 예이다 데이터 어댑터

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 

를 사용하여 연결된다.

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___ 등의 값과 일치하지 않습니다.

관련 문제