1

我有这样的方法

private string AccountCreation()
{
     string accountId="";

     using (SqlConnection connection = new SqlConnection(ConnectionString))
     {
         connection.Open();
         SqlCommand command = new SqlCommand();
         command.Connection = connection;
         StringBuilder sql = new StringBuilder();
         sql.AppendLine("SELECT ACCOUNT_ID,CUSTOMER_ID FROM T_ACCOUNT order by ACCOUNT_ID desc");
         sql.AppendLine("SET IDENTITY_INSERT T_ACCOUNT ON");
         sql.AppendLine("INSERT INTO  T_ACCOUNT (ACCOUNT_ID,CUSTOMER_ID)");
         sql.AppendLine("SELECT ACCOUNT_ID + 1, CUSTOMER_ID +1 FROM T_ACCOUNT Where ACCOUNT_ID = (select max(ACCOUNT_ID) from T_ACCOUNT)");
         sql.AppendLine("SET IDENTITY_INSERT T_ACCOUNT OFF");
         accountId = Convert.ToString(sql.AppendLine("SELECT top 1 ACCOUNT_ID FROM T_ACCOUNT order by ACCOUNT_ID desc"));
         string strUpdateQuery = sql.ToString();
         ExecuteQuery(strUpdateQuery, command);                
     }
     return accountId;
}

现在accountId保存查询,但不保存执行查询后返回的值。我想要那个字符串中的值。谁能帮我?

4

4 回答 4

3

从查询中获取价值。你需要ExecuteScalar方法。

object oRetVal = command.ExecuteScalar();
string accountId = string.Empty;

if(oRetVal != null) 
{
    accountId = oRetVal.ToString();
}

但是,建议使用store procedure.

于 2014-05-05T07:46:47.400 回答
0

我假设您正在从查询中查找“TOP 1 Account_ID”。你在那里所做的将不起作用(或给你你想要的)。您将需要发送输出参数以放入 accountID,或者使用 datareader 或数据集运行获取数据。

于 2014-05-05T07:44:59.803 回答
0

您必须将 ExecuteQuery 的输出绑定到一个对象。检查这是否返回任何结果并填充 accID。

var accID = ExecuteQuery(strUpdateQuery, command)

于 2014-05-05T07:45:28.383 回答
0
public string ExecuteQuery(string query,SqlCommand cmd)
{
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = query;
    object i=cmd.ExecuteScalar();
    return i.ToString();
}

在此之后,只需将其分配给帐户

accountId = ExecuteQuery(strUpdateQuery, command);
于 2014-05-05T10:31:10.450 回答