2015-03-07 2 views
-4

Я хотел бы выполнить SqlCommand как:Visual Studio C# 2010 SqlCommand Выберите

SqlCommand com = "(SELECT * FROM tblEmployee WHERE Username = 'Venz')"; 

Я действительно не знаю, если это будет работать! Но если он будет делать, как я могу получить массивы внутри com, если бы он соответствовал правильному состоянию? Потому что после выбора tblEmployee где имя пользователя равно Вензь Я хотел бы вывести его люблю:

Console.WriteLine(com.Username); 

В PHP это очень легко, но я новичок в C#, так что я испытывает трудности

+0

Заканчивать [Dapper.NET] (https://code.google.com/p/dapper-dot-net/) или Entity Framework - в C#, вам должен определенно уйти от работы с * raw * SQL и вместо этого перейти на использование ** ORM **, который возвращает вам полезные, используемые для C# объекты из базы данных! –

+2

Вы когда-нибудь читали документацию 'SqlCommand'? Сколько столбцов у вашей таблицы? Что вы хотите получить с помощью 'com.Username' в результате? –

+0

Я не согласен, хотя ORM кажется приятным и легким вначале, вы скоро столкнетесь с проблемами. лучше просто использовать шаблон SqlClient и репозитория – Ewan

ответ

1
using System; 
using System.Data.SqlClient; 

class Program 
{ 
    static void Main() 
    { 
    string connectionString = ConsoleApplication1.Properties.Settings.Default.ConnectionString; 
    using (SqlConnection con = new SqlConnection(connectionString)) 
    { 
     con.Open(); 
     string cmd = "(SELECT * FROM tblEmployee WHERE Username = 'Venz')"; 
     using (SqlCommand command = new SqlCommand(cmd, con)) 
     using (SqlDataReader reader = command.ExecuteReader()) 
     { 
     while (reader.Read()) 
     { 
      Console.WriteLine(reader["Username"].ToString()); 
     } 
     } 
    } 
    } 
} 

вы можете сделать это без цикла в то время, как следует, но это может ошибка, если результаты не будут возвращены

using (SqlDataReader reader = command.ExecuteReader()) 
{ 
    reader.Read() 
    Console.WriteLine(reader["Username"].ToString()); 
} 

как упомянуто в комментариях рамках OQ ORM, как EF может предложить короче, меньше кода, пути достижения результата. однако они esentaily делают то же самое под капотом

+0

спасибо google! http://www.dotnetperls.com/sqlconnection – Ewan

1

Прежде всего вам нужно узнать об ADO.net (команда Sql, Sql-соединение, Sql dataTable ...), по крайней мере, найти учебники для начинающих. Тогда, чтобы ответить на ваш вопрос: Предполагает ваш проект имеет App.config, как показано ниже:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <connectionStrings> 
     <add name="WingtipToys" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=WingtipToys;Integrated Security=True;Pooling=False" /> 
    </connectionStrings> 
</configuration> 

Необходимо указать строку соединения для того, чтобы подключить приложение к источнику данных, например:

var connectionString = ConfigurationManager.ConnectionStrings["WingtipToys"].ConnectionString; 

Затем вы должны создать свое соединение, используя SqlConnection и строку подключения. После этого вы создаете команду, которую вы хотите использовать, используя sqlCommand. В конце вы освобождаете свою команду и извлекаете свои данные. В вашем случае вы используете запрос выбора, таким образом, вы получите результат SqlDataReader. Здесь вы можете получить то, что вам нужно, с помощью функции While для циклирования ваших данных. Ниже вы найдете простой пример из MSDN:

string queryString ="(SELECT * FROM tblEmployee WHERE Username = 'Venz')"; 
using (var connection = new SqlConnection(connectionString)) 
      { 
       var command = new SqlCommand(queryString, connection); 
       connection.Open(); 
       using (var reader = command.ExecuteReader()) 
       { 
        while (reader.Read()) 
        { 
         Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1])); 
        } 
       } 
      } 
+0

он вам, если этот ответ поможет вам по крайней мере отметить его как ответ –