Tag: 参数化

应用参数后查看查询的方法?

在C#应用程序中,我通过创建带参数的查询字符串来构建查询,然后添加参数及其值的命令。 例如: string query = “UPDATE USERS u SET u.username = @PARM_USERNAME ” + “WHERE u.id = @PARM_USERID “; command.Parameters.AddWithValue(“@PARM_USERNAME”, user.username); command.Parameters.AddWithValue(“@PARM_USERID”, user.id); command.Connection.Open(); int res = command.ExecuteNonQuery(); 看看带有参数的查询是否有用,这在C#/ Visual Studio中是否可行? 我可以查看command.CommandText,但它只显示与上面查询相同的内容,其中包含参数占位符。 如果有帮助,这是针对MySQL的。

将lambda传递给参数化的NUnit测试

我有一个带有一堆重载运算符的类: public static double[,] operator +(Matrix matrix, double[,] array) public static double[,] operator -(Matrix matrix, double[,] array) public static double[,] operator *(Matrix matrix, double[,] array) 对于所有这些我想测试操作数为null。 我有一个NUnit测试: public void MatrixOperatorOperandIsNullThrows(Func op) { Matrix m = null; var right = new double[,] {{1, 1}, {1, 1}}; Assert.Throws(() => op(m, right)); } 如何为每个运算符传递lambda,如(l,r) => l + r […]

参数化查询(C#,Oracle):如何生成更具可读性的表示?

我在C#代码中使用参数化查询来与Oracle数据库进行交互。 如何以更易读的方式记录语句? 假设我有一个参数化查询,如: INSERT INTO PERSON (ID, NAME, BIRTHDATE) VALUES (:id, :name, :birthdate) 理想情况下,我希望看到更改了所有参数的日志条目,以便我可以复制并粘贴该语句供以后使用: INSERT INTO PERSON (ID, NAME, BIRTHDATE) VALUES (23, ‘Mike’, TO_DATE(‘2003/07/09’, ‘yyyy/mm/dd’) 我目前的方法是打印出参数化查询的字符串,然后迭代所有参数并使用ToString()。 如果有许多参数,这有点难以阅读。 它会产生类似于: INSERT INTO PERSON (ID, NAME, BIRTHDATE) VALUES (:id, :name, :birthdate) [:id=23, :name=Mike, birthdate=2004/07/09 00:00:00] 我计划的另一种方法是使用string.Replace()函数替换参数占位符。 但也许有更好的方法来做到这一点? 提前致谢。 编辑1: 我想更好地提供一些代码示例。 我在这种forms下使用参数化查询(注意:我使用的是log4net): using (OracleConnection connection = new OracleConnection(connectionString)) using […]

将对象的引用传递给新的Thread

我有一个包含非常大的双3D数组的对象,我需要启动一个需要该数组数据的新线程,所以我需要启动一个新的线程传递该对象(其中包含很多其他数据也是新线程或我只是将3D数组传递给新线程。 对于第一个解决方案,我只需执行以下操作: MyClass { … public double[,,] _data = new double[x,y,z]; … } MyMethod(object MyObject) { //do stuff with (MyObject as MyClass) } MyClass _newObject = new MyClass(); Thread thread = new Thread(new ParameterizedThreadStart(MyMethod)); thread.Start(_newObject); 我现在的问题是:当我将对象_newObject传递给新线程时,该对象是通过引用发送到线程还是被复制的对象和新线程使用的副本? 问题是该对象包含大约300MB的数据,如果使用副本几乎是不可能的,因为我需要启动大约需要使用该对象数据的10个线程。

参数化sql查询 – asp.net / c#

所以我最近了解到我绝对应该使用参数化查询来避免SQL注入等安全问题。 这一切都很好,所有,我得到它的工作。 此代码显示了我如何执行的一些代码: param1 = new SqlParameter(); param1.ParameterName = “@username”; param1.Value = username.Text; cmd = new SqlCommand(str, sqlConn); cmd.Parameters.Add(param1); //and so on 但问题是,我有超过14个需要保存到数据库的变量,它就像一个注册表单。 如果我必须将这些行写入14次以参数化每个变量,它看起来会非常混乱。 有没有更有活力的方法呢? 就像使用for循环或其他东西并以某种方式参数化循环中的每个变量一样?