- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
<分区>
我一直在互联网上搜索,但我似乎找不到任何可以解释我的问题的东西(可能是我没有使用正确的搜索字符串),所以我在这里发帖希望有人可以帮我解决这个问题。 (我的程序是用C#写的,使用Visual Studio 2010)
我注意到在 C# 中,有多种构造 SQL 命令的方法。
SqlConnection connection = GetAndOpenConnection(); //function containing connection string and open connection
SqlCommand command = connection.CreateCommand();
到目前为止,我没有问题。我遇到的问题是 CommandText
.我在我的代码中使用了几个不同的命令( SELECT
/INSERT
/UPDATE
/DELETE
),但让我们使用 SELECT
例如。
//Example 1:
command.CommandText = String.Format("SELECT * FROM myTable WHERE name = '{0}'", "bob");
//Example 2:
command.CommandText = "SELECT * FROM myTable WHERE name = @myName";
command.Parameters.Add(new SqlParameter("myName", "bob"));
以上两个例子有什么区别? (性能明智/结构明智/等)
我问的原因是因为在同一个 .cs 文件中,当我使用示例 2 中的方法时,有时代码可以正常工作,有时却不能,然后我最终会像示例 1 中那样制作所有内容,每次都有效。
使用这两种方法是否有显着的 yield /损失?哪种方法更适合完成这样的任务?
附加问题
好的,所以我认为方法 2 是更合适的方法。
但是,如果我使用方法2,就会出现问题。
我有一个循环遍历 List<string> names
.在循环中,当我使用方法 2 并添加名称作为参数时,出现错误提示该参数已存在且无法添加。
我该如何解决这个问题?
List<string> names = new List<string> {"adam", "bob", "john"};
foreach(string name in names)
{
command.CommandText = "SELECT * FROM myTable WHERE name = @myName";
command.Parameters.Add(new SqlParameter("myName", name));
reader = command.ExecuteReader();
while(reader.Read())
{
//loop through each cell and print on the Console
}
}
此外,我知道有人提到在参数中它应该是 "@myName"
而不是 "myName"
.我记得遇到过这个问题,因为我对使用哪种方式感到困惑,不得不对其进行测试。 "@myName"
不适合我,但 "myName"
是的,这就是我现在仍在使用方法 2 的部分代码中的情况。我使用的是 .Net 4.0,不知道这是否会产生影响。
我需要使用 ADO.NET 将一系列命令发送到 SQL 2008,以便逐个执行。我应该为我发送的每个 SQL 创建一个新的 SQLCommand 吗?或者重用相同的 SQLCommand 并仅更改 C
我们可以在将参数传递给 sql 查询时同时使用这两种方法吗? 那么它们之间有什么区别呢? 最佳答案 MSDN article on AddWithValue() 解释两者之间的差异。内是对细微差异的解
我已经彻底搜索,但找不到 SET 的方法我的列数据到我使用 SQL 初始化的变量 UPDATE陈述。 这是导致问题的一段代码: int maxId; SqlConnection dataConnect
使用 SqlParameters是防止数据库查询中的 SQL 注入(inject)的推荐方法。我在哪里可以找到内部清理这些参数的代码/函数?我想在我的自定义实现中重新使用这个函数。我尝试使用 Refl
我目前正在使用 SQL Server 2014 中的 C# 脚本更新和读取值。当使用 SQlCommand 执行非查询时,运行脚本时会弹出错误: IndexOutOfRangeException: A
我最近一直在做一个旧项目。我在项目中发现以前的同事已经创建了一些用于打开与数据库的连接的常用方法。但是我怀疑这个过程是否真的在查询完成后通过 IDispose 处理连接。 方法如下: 连接数据库。 /
抱歉格式化,有点粗糙 我在 C# 中通过 SQLCommand 插入语句时遇到问题。插入完成后,ID 将返回给程序。 我填充了一些变量并编写了一个 SQLCommand。考虑了所有参数。 using
我有以下 SQL 语句(如果我在我的数据库中像这样执行它,它会起作用): IF EXISTS (SELECT * FROM dbo.PopularityPokemon WHERE Dex_ID = '
我有一个 C# 程序,我在其中创建了各种类,所有类都需要调用数据库。所以我决定创建一个静态类来处理所有调用,以便我可以非常轻松地应用影响深远的更改。在那个类中,我有调用 SqlCommand 各个部分
试图只返回前几行,因为我的数据库太大了,但是当我测试我的 SQL 时,我做了一个 select * 并且只返回了第一行。 SqlCommand sqlCmd = new SqlCommand(); S
我对从 SqlCommand 返回的值有疑问,我有这段代码: string sqlSelect = "Select TOP 1 Quotation.SentToSupp as SentToSupp F
我正在 .Net 中创建测试方法,需要更改数据库以设置测试场景。我们使用 SqlCommands 发送查询来更改数据库,为此连接字符串是受信任的连接字符串。所有 DROPS 和 ALTER 查询对于表
我试图通过 SqlCommand 将表名作为参数传递给我的查询,但它似乎不起作用。这是我的代码; SqlConnection con = new SqlConnection( "server=.;us
当我在 SSMS 中执行以下命令时,我得到了预期的结果 - SELECT * FROM [Event] WHERE Active = 'True' AND [Name] LIKE '%P%' 即显示名
我在 C# 中运行一条返回一个值(字符串)的 SQL 命令。然后我试图将它保存到一个变量,但它总是抛出这个异常: A first chance exception of type 'System.In
我有这个 SqlCommand,但我不知道如何给出返回值? string param = Request.QueryString["id"]; System.Data.SqlClient.SqlCon
我对使用 C# 和 ASP.NET 还很陌生,我很好奇在 SQL 数据库上运行多个查询时是否有命名 SqlCommand 的约定。例如,我已经创建了我的 SqlConnection,我希望调用一个函数
好吧,这是微不足道的,但它一直困扰着我。我有这样的代码 oCmd = new SqlCommand("getBooking", oCon); oCmd.CommandType = CommandTyp
如果我有这个变量: int value = 4; 将作为一些 sql 参数传递: SqlCommand sqlcmd = new SqlCommand(); sqlcmd.Parameters.Add
我使用以下代码从 SQL Server 表中进行选择: using (SqlConnection con = new SqlConnection(SqlConnectionString)) {
我是一名优秀的程序员,十分优秀!