首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS2015 C#中的SqlConnection

VS2015 C#中的SqlConnection
EN

Stack Overflow用户
提问于 2017-01-06 03:30:34
回答 6查看 3.4K关注 0票数 1

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

提前感谢您的帮助。环境保护局

EN

回答 6

Stack Overflow用户

发布于 2017-01-06 03:34:12

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

你必须使用:

代码语言:javascript
复制
using System.Data;
using System.Data.SqlClient;

这是用于检索DataTable的代码

代码语言:javascript
复制
    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;
        }

以下代码用于运行不需要带参数和不带参数的结果的查询:

代码语言:javascript
复制
    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();
        }
    }
票数 3
EN

Stack Overflow用户

发布于 2017-01-06 04:21:04

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

代码语言:javascript
复制
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();

        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-01-06 04:00:43

如果您对使用SQL Server的C#非常陌生,我建议您使用here中显示的教程之一从头开始。它以一步一步的方式提供了大量信息:

  1. The basics
  2. 清晰定义核心概念
  3. 如何设置依赖关系入门
  4. 如何在开发模型(代码、模型和数据库)之间进行选择
  5. 如何编写查询

还有更多。

使用SqlConnection是一个有效的选择,但需要更多的精力来编写查询,以执行基本的操作,如选择、更新、删除或插入数据。实际上,您必须构造查询,并小心地构建和处置命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41493175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档