当前位置: 首页 > 面试题库 >

SqlParameter的正确语法

严易安
2023-03-14
问题内容

我正在尝试转换:

command.Parameters.Add (new SqliteParameter (DbType.Int32) { Value = id });

到一个普通的SqlParameter:

command.Parameters.Add(new SqlParameter(DbType.Int32) { Value = id });

除了这行之外,我现在设法转换了每一行,但出现了以下错误:

Error   3   Argument 1: cannot convert from 'System.Data.DbType' to 'object[]'
Error   2   The best overloaded method match for 'System.Data.SqlClient.SqlParameter.SqlParameter(object[])' has some invalid arguments

全功能代码:

public User GetUser(int id)
{
    var u = new User();
    lock (locker)
    {
        connection = new SqlConnection("Data Source=" + path + ";Initial Catalog=DB;User ID=sa;Password=***********th");
        connection.Open();
        using (var command = connection.CreateCommand())
        {
            command.CommandText = "Select * from tblUsers WHERE UserID = ?";
            command.Parameters.Add(new SqlParameter(DbType.Int32) { Value = id });
            var r = command.ExecuteReader();
            while (r.Read())
            {
                u = FromReader(r);
                break;
            }
        }
        connection.Close();
    }
    return u;
}

问题答案:

我认为您正在寻找的东西;

command.Parameters.Add(new SqlParameter("@YourParameterName", SqlDbType.Int32).Value = id;

编辑完问题后;

您可以使用AddWithValue方法。Add(String, Object)方法已过时。喜欢;

command.CommandText = "Select * from tblUsers WHERE UserID = @id";
command.Parameters.AddWithValue("@id", id);

如果将SQL Server用作数据库,则应AddWithValue使用相同的名称命名参数add to 。

使用时OleDbCommand,参数的顺序很重要。因为如上MSDN所说:

当CommandType设置为Text时,OLE DB .NET
Provider不支持将命名参数传递给SQL语句或OleDbCommand调用的存储过程的命名参数。在这种情况下,必须使用问号(?)占位符。例如:

SELECT * FROM Customers WHERE CustomerID = ?

因此,将OleDbParameter对象添加到OleDbParameterCollection的顺序必须直接对应于命令文本中参数的问号占位符的位置。



 类似资料:
  • 打开和关闭连接: 注册用户 错误消息 '/'应用程序中的服务器错误。 INSERT INTO语句中存在语法错误。 描述:在执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的起源的更多信息。 异常详细信息:系统。数据。OleDb。OleDbException:INSERT INTO语句中的语法错误。 源错误: 第100行:命令。ExecuteNonQuery();第1

  • 我正在尝试用Selenium在Java中创建ajax wait方法,以获取配置所定义的尽可能多的结果。 我是否应该担心XPath表达式不是snytax正确的,或者Selenium找不到那个webelement?这个例外对我来说是模棱两可的....

  • 问题内容: 我正在尝试在内添加HTML代码段,但无法使用包含功能。看来的当前语法与以前的语法不同:我看到许多示例使用 但是在官方文档中,它说使用 但随后在页面下方显示为 无论如何,我尝试了 我的代码片段不是很多代码,但是有很多事情要做。这可能会引起问题,所以我只用单词代替了内容,仍然一无所获。 我还尝试过直接在页面中声明模板,如下所示: 并遍历了引用脚本的所有变体,仍然一无所获。 我的页面还有很多

  • 问题内容: 我是一名新的Python程序员,他正在从2.6.4跃升至3.1.1。在我尝试使用“ else if”语句之前,一切都很好。解释器在“ else if”中的“ if”之后给了我一个语法错误,原因是我似乎无法弄清。 我可能缺少一些非常简单的东西;但是,我无法自行找到答案。 问题答案: 在python中,“ else if”被拼写为“ elif”。 另外,您还需要在和之后加上一个冒号。 简单

  • 问题内容: 我有一个Java代码: 然后我有SQLException: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在’?’附近使用正确的语法。 问题答案: 您应该执行不带任何参数的,如下所示: 使用参数调用将按原样执行提供的查询(没有绑定参数)。

  • 问题内容: 我是学生,这是家庭作业…表格在那里,但没有插入数据。 感谢您的任何建议 SQL语句: 问题答案: 您在其中没有子句(“ Ledonna”之后的子句) 请注意,如果您双击Management Studio中的错误消息,它将带您进入代码的问题位。