2

我有这个方法:

public static int ExecuteNonQuery(ref DbCommand command, out string ErrorMessage)
{
    ErrorMessage = String.Empty;
    DbTransaction tran = null;
    DbConnection conn = null;
    int result = 0;

在另一个页面上访问时使用此方法。我以 SQLcommand 的形式传递了一个命令,我向该命令传递了一个查询,但我不明白这out string是为了什么。这是别人的代码,但我想将它用于插入查询的抽象目的。我应该如何获取 errormessage 参数,因为它说它是一个输出字符串。

我想在我的一个页面上这样做:

string Email = "example@example.com";
string Password = "Hello";
SqlCommand command = new SqlCommand("insert into J_example_Tbl(J_example_Email,J_example_Password) VALUES('"+Email+"','"+Password+"')");

PrimaryDBClass.ExecuteNonQuery(command, "Should I do like this");
4

2 回答 2

7

关于

但我不明白这个输出字符串的用途

Out 代表指向一个变量。关键字描述了参数,out其实际变量位置被复制到被调用方法的堆栈中,这些相同的位置可以被重写。这意味着调用方法将访问更改的参数。

例如:如果您声明了一个名为testin的变量class1并想从另一个类中更改值class2,并且仍想从中获取更改后的值,则必须使用关键字 fromclass1发送测试变量to 。outclass1class2

这意味着在您的方法中:

public static int ExecuteNonQuery(ref DbCommand command, out string ErrorMessage)

如果变量 ErrorMessage 发生任何变化,它将指向它来自的实际变量。因此,您将从 ExecuteNonQuery() 方法之外获得更改后的值。

于 2013-07-03T10:27:54.423 回答
1

out参数可以这样使用:

string Email = "example@example.com";
string Password = "Hello";
SqlCommand command = new SqlCommand("insert into J_example_Tbl(J_example_Email,J_example_Password) VALUES('"+Email+"','"+Password+"')");
string error;
PrimaryDBClass.ExecuteNonQuery(command, out error);

if(error != null)
 ....

您可能应该以其他方式检查结果(例如检查返回值或其他方式)。看看 Jon Skeet 的建议。

于 2013-07-03T09:52:00.947 回答