如何在c#中将行值从SQL服务器转换为字符串
本文关键字:SQL 服务器 转换 字符串 | 更新日期: 2023-09-27 18:01:36
我有一个这样的方法
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
保存查询,但不保存查询执行后返回的值。我想要那个字符串中的值。有人能帮我吗?
从查询中获取值。你需要ExecuteScalar
方法。
object oRetVal = command.ExecuteScalar();
string accountId = string.Empty;
if(oRetVal != null)
{
accountId = oRetVal.ToString();
}
建议使用store procedure
我假设您正在从查询中寻找"TOP 1 Account_ID"。你在那里所做的不会起作用(或给你想要的)。您需要发送一个输出参数来放置accountID,或者使用datareader或dataset运行获取数据。
您必须将ExecuteQuery的输出绑定到一个对象。检查是否返回任何结果并填充accID。
var accID = ExecuteQuery(strUpdateQuery, command)
public string ExecuteQuery(string query,SqlCommand cmd)
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
object i=cmd.ExecuteScalar();
return i.ToString();
}
之后把这个赋值给account
accountId = ExecuteQuery(strUpdateQuery, command);