Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VSC中的SqlConnection#_C#_Sql_Visual Studio 2015_Database Connection - Fatal编程技术网

C# VSC中的SqlConnection#

C# VSC中的SqlConnection#,c#,sql,visual-studio-2015,database-connection,C#,Sql,Visual Studio 2015,Database Connection,我对C#web开发(或任何与此相关的开发)非常陌生,但我正在尝试找出如何将SQL查询的结果保存到变量。我想我理解这个过程,但是我在Web上找到的许多示例都使用SqlConnection语句。我的VisualStudio副本似乎没有这个命令(我很确定我在这里使用了错误的单词)。无论是软件方面还是知识方面,我都缺少什么来完成我的任务 提前感谢您的帮助。 Dep这取决于您要执行的操作:插入、更新、获取数据。这还取决于是否要使用ORM库。我看情况而定。下面我复制的代码是一个如何使用Ado.Net检索Da

我对C#web开发(或任何与此相关的开发)非常陌生,但我正在尝试找出如何将SQL查询的结果保存到变量。我想我理解这个过程,但是我在Web上找到的许多示例都使用SqlConnection语句。我的VisualStudio副本似乎没有这个命令(我很确定我在这里使用了错误的单词)。无论是软件方面还是知识方面,我都缺少什么来完成我的任务

提前感谢您的帮助。
Dep

这取决于您要执行的操作:插入、更新、获取数据。这还取决于是否要使用ORM库。我看情况而定。下面我复制的代码是一个如何使用Ado.Net检索DataTable的示例(正如您提到的SqlConnection):

您必须使用:

using System.Data;
using System.Data.SqlClient;
这是用于检索数据表的代码

    private DataSet ExecuteDataset(string query)
    {
        var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
        DataSet ds;
        try
        {
            conn.Open();
            ds = new DataSet();
            var da = new SqlDataAdapter(query, conn);
            da.Fill(ds);
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            conn.Dispose();
            conn.Close();
        }
        return ds;
    }

       private DataSet ExecuteDataset(string query, SqlParameter[] parametros)
        {
            var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
            DataSet ds;
            try
            {
                conn.Open();

                SqlCommand command = conn.CreateCommand();
                command.CommandText = query;

                foreach (SqlParameter p in parametros)
                {
                    command.Parameters.Add(p);
                }

                ds = new DataSet();
                var da = new SqlDataAdapter(command);
                da.Fill(ds);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                conn.Dispose();
                conn.Close();
            }
            return ds;
        }
这是用于运行查询的代码,该查询不期望有参数和无参数的结果:

    private void ExecuteNonQuery(string query)
    {
        var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
        try
        {
            conn.Open();
            SqlCommand command = conn.CreateCommand();
            command.CommandText = query;
            command.ExecuteNonQuery();
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            conn.Dispose();
            conn.Close();
        }
    }

    private void ExecuteNonQuery(string query, SqlParameter[] parametros)
    {
        var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
        try
        {
            conn.Open();
            SqlCommand command = conn.CreateCommand();
            command.CommandText = query;

            foreach (SqlParameter p in parametros)
            {
                command.Parameters.Add(p);
            }

            command.ExecuteNonQuery();
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            conn.Dispose();
            conn.Close();
        }
    }

这取决于您想做什么:插入、更新、获取数据。这还取决于是否要使用ORM库。我看情况而定。下面我复制的代码是一个如何使用Ado.Net检索DataTable的示例(正如您提到的SqlConnection):

您必须使用:

using System.Data;
using System.Data.SqlClient;
这是用于检索数据表的代码

    private DataSet ExecuteDataset(string query)
    {
        var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
        DataSet ds;
        try
        {
            conn.Open();
            ds = new DataSet();
            var da = new SqlDataAdapter(query, conn);
            da.Fill(ds);
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            conn.Dispose();
            conn.Close();
        }
        return ds;
    }

       private DataSet ExecuteDataset(string query, SqlParameter[] parametros)
        {
            var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
            DataSet ds;
            try
            {
                conn.Open();

                SqlCommand command = conn.CreateCommand();
                command.CommandText = query;

                foreach (SqlParameter p in parametros)
                {
                    command.Parameters.Add(p);
                }

                ds = new DataSet();
                var da = new SqlDataAdapter(command);
                da.Fill(ds);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                conn.Dispose();
                conn.Close();
            }
            return ds;
        }
这是用于运行查询的代码,该查询不期望有参数和无参数的结果:

    private void ExecuteNonQuery(string query)
    {
        var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
        try
        {
            conn.Open();
            SqlCommand command = conn.CreateCommand();
            command.CommandText = query;
            command.ExecuteNonQuery();
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            conn.Dispose();
            conn.Close();
        }
    }

    private void ExecuteNonQuery(string query, SqlParameter[] parametros)
    {
        var conn = new SqlConnection("Data Source=" + Server + ";Initial Catalog=" + Database + ";User Id=" + Username + ";Password=" + Password + ";");
        try
        {
            conn.Open();
            SqlCommand command = conn.CreateCommand();
            command.CommandText = query;

            foreach (SqlParameter p in parametros)
            {
                command.Parameters.Add(p);
            }

            command.ExecuteNonQuery();
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            conn.Dispose();
            conn.Close();
        }
    }
如果您真的不熟悉使用SQL Server的C#,我建议您从零开始使用所示的教程之一。它以循序渐进的方式提供了大量信息:

  • 基础
  • 明确界定核心概念
  • 如何设置依赖项以开始
  • 如何在开发模型之间进行选择(首先是代码、模型和数据库)
  • 如何编写查询
  • 还有更多

    使用
    SqlConnection
    是一个有效的选择,但在编写查询时需要花费更多的精力来完成选择、更新、删除或插入数据等基本工作。实际上,您必须构造查询,并注意生成和处理命令。

    如果您对使用SQL Server的C#非常陌生,我建议您从零开始使用所示的教程之一。它以循序渐进的方式提供了大量信息:

  • 基础
  • 明确界定核心概念
  • 如何设置依赖项以开始
  • 如何在开发模型之间进行选择(首先是代码、模型和数据库)
  • 如何编写查询
  • 还有更多

    使用
    SqlConnection
    是一个有效的选择,但在编写查询时需要花费更多的精力来完成选择、更新、删除或插入数据等基本工作。实际上,您必须构造查询,并注意生成和处理命令。

    相关注释:

    在C#或.NET中执行所有数据库相关活动的新方法是利用实体框架(EF),并尝试摆脱任何基于ADO.NET的代码。不过,后者仍然存在,并没有被标记为过时。您可能希望将ADO.NET用于小型应用程序或任何PoC任务。但是,除此之外,EF是一条路要走

    EF是一个ORM,实际上是作为存储库模式构建的,并生成一个供我们使用的概念层。连接和指挥的所有细微差别都被我们完全概括了出来。这样,我们就不必干涉这些赤裸裸的事情。

    相关注释:

    在C#或.NET中执行所有数据库相关活动的新方法是利用实体框架(EF),并尝试摆脱任何基于ADO.NET的代码。不过,后者仍然存在,并没有被标记为过时。您可能希望将ADO.NET用于小型应用程序或任何PoC任务。但是,除此之外,EF是一条路要走


    EF是一个ORM,实际上是作为存储库模式构建的,并生成一个供我们使用的概念层。连接和指挥的所有细微差别都被我们完全概括了出来。这样,我们就不必干涉这些基本问题。

    如果您想做得好,您必须在项目中编辑一个名为Web.config的文件,并在其中放入类似的内容(使用您自己的数据库数据):

    最后,您可以使用“con”实现您想要的功能,例如:

    string queryString = "SELECT name, surname FROM employees";
    
    SqlCommand command = new SqlCommand(queryString, con);
    con.Open();
    SqlDataReader reader = command.ExecuteReader();
    try
    {
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
            reader["name"], reader["surname"]));
        }
    }
    finally
    {
        reader.Close();
    }
    

    如果您想做好这项工作,您必须在项目中编辑一个名为Web.config的文件,并在其中放入类似的内容(使用您自己的DB数据):

    最后,您可以使用“con”实现您想要的功能,例如:

    string queryString = "SELECT name, surname FROM employees";
    
    SqlCommand command = new SqlCommand(queryString, con);
    con.Open();
    SqlDataReader reader = command.ExecuteReader();
    try
    {
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
            reader["name"], reader["surname"]));
        }
    }
    finally
    {
        reader.Close();
    }
    

    这是我能想到的最简单的例子,注意使用语句和注释

    using System;
    using System.Data;
    using System.Data.SqlClient;
    
    namespace DataAccess
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Use your database details here.
                var connString = @"Server=localhost\SQL2014;Database=AdventureWorks2012;Trusted_Connection=True;";
    
                //Enter query here, ExecuteScalar returns first column first row only
                //If you need to return more records use ExecuteReader/ExecuteNonQuery instead
                var query = @"SELECT [AccountNumber]
                              FROM [Purchasing].[Vendor]
                              where Name = @Name";
    
                string accountNumber = string.Empty;
    
                //Using statement automatically closes the connection so you don't need to call conn.Close()
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlCommand cmd = new SqlCommand(query, conn);
                    //Replace @Name as parameter to avoid dependency injection
                    cmd.Parameters.Add("@Name", SqlDbType.VarChar);
                    cmd.Parameters["@name"].Value = "Michael";
                    try
                    {
                        conn.Open();
                        //Cast the return value to the string, if it's an integer then use (int)
                        accountNumber = (string)cmd.ExecuteScalar();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
                Console.WriteLine(accountNumber);
                //ReadKey just to keep the console from closing
                Console.ReadKey();
    
            }
        }
    }
    

    这是我能想到的最简单的例子,注意使用语句和注释

    using System;
    using System.Data;
    using System.Data.SqlClient;
    
    namespace DataAccess
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Use your database details here.
                var connString = @"Server=localhost\SQL2014;Database=AdventureWorks2012;Trusted_Connection=True;";
    
                //Enter query here, ExecuteScalar returns first column first row only
                //If you need to return more records use ExecuteReader/ExecuteNonQuery instead
                var query = @"SELECT [AccountNumber]
                              FROM [Purchasing].[Vendor]
                              where Name = @Name";
    
                string accountNumber = string.Empty;
    
                //Using statement automatically closes the connection so you don't need to call conn.Close()
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlCommand cmd = new SqlCommand(query, conn);
                    //Replace @Name as parameter to avoid dependency injection
                    cmd.Parameters.Add("@Name", SqlDbType.VarChar);
                    cmd.Parameters["@name"].Value = "Michael";
                    try
                    {
                        conn.Open();
                        //Cast the return value to the string, if it's an integer then use (int)
                        accountNumber = (string)cmd.ExecuteScalar();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
                Console.WriteLine(accountNumber);
                //ReadKey just to keep the console from closing
                Console.ReadKey();
    
            }
        }
    }
    
    我使用这个nuget库。

    我使用这个nuget库。


    您需要使用System.Data.SqlClient引用System.Data和
    您需要一个对System.Data的引用和一个
    使用System.Data.SqlClient
    您不需要
    ExecuteDataset
    中的
    conn.Open()
    ,因为
    da.Fill(ds)
    将在连接尚未打开时打开连接,在调用时关闭连接(即保持
    ConnectionState
    不变)。谢谢,不知道:)如果您的连接和命令使用,你最好马上用你自己的价值观来代替我很抱歉,但我不清楚。我正在编写与第二个示例类似的代码,但VS2015似乎根本不理解“var conn=new SqlConnection”行。“找不到类型或命名空间名称SqlConnection”是我得到的错误。您不需要
    ExecuteDataset
    中的
    conn.Open()
    ,因为
    da.Fill(ds)
    将在连接尚未打开时打开连接,在调用时关闭时关闭连接(即,它保持
    连接状态
    不变)。谢谢,我不知道:)如果您的连接和命令使用using,您拥有的会更好