c# - 从 C# 代码执行 SQL 查询

标签 c# sql-server visual-studio

我正在尝试从 C# 代码执行 SQL 查询,但它没有返回任何值,但是当我将查询直接写入 SQL 时,它工作正常。

static int TestGettingData()
{
        int rows;
        string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            using (SqlCommand command = new SqlCommand("SELECT [UserName] FROM [aspnet_Users]", connection))
            {
                connection.Open();
                rows = command.ExecuteNonQuery();
            }
        }
        return rows;
}

和连接字符串:

<connectionStrings>
<add name ="DefaultConnection" connectionString="Server=myServer;
            Database=MyDatabase;User 
            Id=User;
            Password=password;
            MultipleActiveResultSets=True;"
            providerName="System.Data.SqlClient"/>
</connectionStrings>

TestGettingData() 总是返回 -1。

最佳答案

有多种方法可以从数据库中获取数据

执行标量

如果你有一个结果字段你可以使用

string Command = "SELECT [UserName] FROM [aspnet_Users];";
using (SqlConnection myConnection = new SqlConnection(ConnectionString))
{
    myConnection.Open();
    using (SqlCommand myCommand = new SqlCommand(Command, myConnection))
    {
        string Result = (string)myCommand.ExecuteScalar(); // returns the first column of the first row
    }
}

SQLDataAdapter

如果您希望多行/多列,您可以将其加载到 DataTable 中

string Command = "SELECT [UserName] FROM [aspnet_Users]";
using (SqlConnection myConnection = new SqlConnection(ConnectionString))
{
    using (SqlDataAdapter myDataAdapter = new SqlDataAdapter(Command, myConnection))
    {
        DataTable dtResult = new DataTable();
        myDataAdapter.Fill(dtResult);
    }
}

SQLDataReader

另一个解决方案是 SQLDataReader。例如。如果要将列的所有行加载到列表中。这比 DataAdapter 的开销更少。

List<string> Result = new List<string>();
string Command = "SELECT [UserName] FROM [aspnet_Users];";
using (SqlConnection mConnection = new SqlConnection(ConnectionString))
{
    mConnection.Open();
    using (SqlCommand cmd = new SqlCommand(Command, mConnection))
    {
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                Result.Add((string)reader[0]);
            }
        }
    }
}

关于c# - 从 C# 代码执行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30392251/

相关文章:

c++ - 巨大阵列中的访问冲突?

c# - MVVMCross Messenger 插件安卓

c# - clr 线程模型信息?

c# - 需要在值类型的对象中使用随机数生成器但不希望其依赖的负担

sql - 多表递归查询

c# - 枚举 sql express 服务器

c++ - 在类外定义静态匿名枚举

c# - 在 C# .NET 中运行 SSIS 包

sql-server - 使用 Entity Framework 忽略 SQL View 的模型创建/更改

c# - 如何检查 bool 列表中的值?