gpt4 book ai didi

c# - 将 VS 项目连接到 SQL Server

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:12 25 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改进这个问题?通过 editing this post 添加详细信息并澄清问题.

3年前关闭。




Improve this question




TL;DR 所以你不要再把它搁置了:
Visual Studio 不允许我在项目内的 SQL 服务器上创建与数据库的实时连接,即使它可以与项目外的服务器通信。我希望它具有实时连接,这样我就可以创建一个使用并允许访问数据库的网站。

我有 Visual Studio 2017 Professional 和 Microsoft SQL Server Management Studio 2017。

我已经成功地将一个数据库从服务器连接到 Visual Studio,这样我就可以在 Visual Studio 中编辑数据库,并且服务器将反射(reflect)我的更改。但是,我无法在任何项目中与服务器建立实时连接。当我将数据库导入项目时,它只是创建了一个实际上并不与服务器通信的副本。

我在想我需要创建某种特殊对象或更改 Visual Studio 中的某些设置。

我是否需要切换到 Enterprise 以获得支持的功能?专业版应该足够了这似乎是合理的,但是如果有人知道如何使用不同版本的 Visual Studio 解决此类问题,或者如何通过另一个 [希望是负担得起的] 程序创建连接到数据库服务器的网站,我全是耳朵。谢谢!

(为了清楚起见,稍后添加了这一段:)我的目标是使用 Visual Studio 创建一个网站,允许授权用户编辑数据库。除非这样做是一个糟糕的主意,否则我想首先使用在 Visual Studio 中制作的网站编辑服务器上的数据库,然后添加安全功能。在系统设置好之前,服务器上的当前数据库是占位垃圾。听起来可能可以使用网站访问数据库,而无需直接将其放入 Visual Studio 项目中,因此我正在研究第二条评论中提供的说明。

根据@Symon 的评论和链接,我管理的错误最少的解决方案如下。我已经为第一行尝试了几件事,并且公开无效似乎将大约 1/30 的错误视为我尝试过的其他任何事情,这绝对不意味着它实际上是正确的答案。出于安全原因,方括号中的项目被删除。我完全按照在弹出窗口中所做的那样输入了数据库的凭据,以将 Visual Studio 通常连接到服务器上的数据库。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public void heresanamespacethingy (string stp)

{
//GET STORED PROCEDURE HERE
string conStr = @"Data Source=[server name]; Initial Catalog=[database name]; User ID=[my user ID]; Password=[my password]";

using (SqlConnection conn = new SqlConnection(conStr))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = stp;

conn.Open();

cmd.CommandType = CommandType.StoredProcedure;

cmd.ExecuteNonQuery();

conn.Close();
conn.Dispose();
}
}

错误是
CS0116 命名空间不能直接包含字段或方法等成员。

最佳答案

我正在使用 VS Community 并且可以很好地与我的 MS SQL Server 交互。您使用的 Visual Studio 版本不会限制您可以通过代码执行的操作。这些版本只是增加了额外的功能。我从未听说有人因为他们使用的 Visual Studio 版本而限制他们的项目。

正如@Kfirprods 所说,使用 Microsoft SQL Server Management Studio 2017 管理服务器/数据库可能对您非常有帮助,而不是尝试使用 Visual Studios 处理所有事情。

我见过的获取实时/当前数据库信息和数据的最常见方法是让您的 C# 代码调用实时数据并提取它。下面我将有一个 C# 调用存储过程的示例。 该示例仅调用一个存储过程,展示了如何使用 C# 连接到 SQL Server 并更改数据。您还可以通过此方法发送单独的内联查询。不过,为了避免 SQL 注入(inject)(尤其是因为它是一个网站),使用此方法调用存储过程和 View 而不是发送内联查询会更好地保护。

This可能是学习如何开始使用 C# 连接到 SQL Server 的一个很好的阅读链接。这是我以前开始的!

我的 SQL Server Management Studio 连接到我的服务器/数据库,而我的 Visual Studio 只关心我的 C# 代码。它有助于保持事情的分离和组织(无论如何对我来说)。

以下是连接到 SQL 数据库并运行存储过程的 C# 方法示例:

 public void CallSproc(string stp)
{
//GET STORED PROCEDURE HERE
string conStr = "Data Source=" + ConfigurationManager.AppSettings["DataSource"] + "Initial Catalog=" + ConfigurationManager.AppSettings["InitialCatalog"] + "Integrated Security=True;";

using (SqlConnection conn = new SqlConnection(conStr))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = stp;

conn.Open();

cmd.CommandType = CommandType.StoredProcedure;

cmd.ExecuteNonQuery();

conn.Close();
conn.Dispose();
}
}

代码解释:
ConfigurationManager.AppSettings[]指向我的 App.config存储此数据的文件和 key (标识符)。如果当前服务器丢失,程序不需要重新编译。只需更改配置文件以指向正确的位置。

变量 stp是从另一个方法传递的字符串,该方法包含存储过程的名称(例如“stpAddNumbers”)。
conStr是告诉 SqlConnection() 的连接字符串调用要连接的服务器和数据库。
conn.Open();打开与 SQL Server 本身的连接。
cmd.CommandType = CommandType.StoredProcedure;告诉代码您正在调用存储过程。
cmd.ExecuteNonQuery();执行存储过程并返回结果。

CS0116 命名空间不能直接包含字段或方法等成员:

使用您显示的代码以及错误消息,您似乎没有 namespace一点也不。要解决此问题,只需将您的 method 包装起来即可。在 namespace .像这样:
...
using System.Threading.Tasks;

namespace HeresANameSpace
{
class ThisIsAClass
{
public void HeresAMethod (string stp)

{
//GET STORED PROCEDURE HERE
string conStr = @"Data Source=[server name]; Initial Catalog=[database name]; User ID=[my user ID]; Password=[my password]";

using (SqlConnection conn = new SqlConnection(conStr))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = stp;

conn.Open();

cmd.CommandType = CommandType.StoredProcedure;

cmd.ExecuteNonQuery();

conn.Close();
conn.Dispose();
}

//End of HeresAMethod()
}

//End of HeresAClass
}

//End of HeresANamespace
}

从空白代码文件开始时,需要在 namespace 中写入, class s 和 method小号一个 method进入 class , 一个 class进入 namespace .

关于c# - 将 VS 项目连接到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53053360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com