2012-01-25 2 views
2

Я очень новичок в программировании, многому научился. надеюсь кто-то может дать мне совет по кодам.Как выполнить инструкцию SQL?

В основном проблема, с которой я столкнулась, заключается в том, что моя инструкция SQL не выполняется для извлечения данных из моей базы данных. он просто назначает userPermissionsOne с SELECT MemberOne FROM aspnet_Users WHERE MemberOne LIKE '_'.

Любая помощь очень ценится.

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 для «выполнить команду sql .net» для получения некоторой базовой информации. – Matten

+1

Вы просто назначаете строку переменной - вам нужно открыть соединение с базой данных и выполнить строку sql и использовать возвращаемое значение. Какую базу данных вы используете? – Marc

ответ

6

У вас есть много вариантов выполнения инструкции SQL с .NET. Прочитайте следующее для стартеров. Это первые три технологии я обычно учитывать при принятии решения, как получить доступ к базе данных:

С Microsoft:

ADO.NET обеспечивает самый прямой способ доступа к данным в .NET Рамки. Для абстракции более высокого уровня, которая позволяет приложениям работать с концептуальной моделью вместо базовой модели хранения , см. Структуру Entity Framework ADO.NET.

В последнее время моя технология перехода к базе данных - это Dapper. Это быстрый, легкий и простой способ кодирования.

4

Предполагая, что вы используете SqlServer в качестве базы данных:

Классы SQLCommand и SqlConnection будет полезна для вас здесь, так что я бы взглянуть на них.

Также хранимые процедуры - отличный способ, поскольку они более безопасны и выполняют несколько быстрее, чем отправка запроса на сервер. Быстрый google для преимуществ хранимых процессов поможет вам здесь

Одна вещь, чтобы отметить, есть различные способы выполнения вашего запроса. Класс SqlCommand имеет довольно много методов, например ExecuteNonQuery() будет запускать только команду sql, которая не возвращает данные (такие как вставка или удаление), тогда как ExecuteScalar будет выполнять запрос, который возвращает только одно значение.

Существуют другие возможности, такие как создание 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 имена As String = String.Пустой

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 Это в значительной степени идентичны скаляра, но без возвращаемого значения

 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() 

Кроме того, в вашем SQL, где вы LIKE ' __ ' вы, вероятно, хотите сделать LIKE '%__%', как % - это подстановочные знаки, вы можете использовать один или оба из них, но просто делать LIKE '__' не соответствует значению, например ___1 или 1___ и т. д.

Смежные вопросы