如何在C#中将nchar转换为字符串?

时间:2012-04-20 14:31:59

标签: c# sql-server visual-studio-2010 tostring

如果已经提出并回答了这个问题,请原谅我。我只是花了一些时间寻找我的问题,而我似乎无法找到它。

无论如何,我在Visual Studio 2010和MS SQL Server中工作。我已经建立了数据库,现在我正在研究前端的东西。无论如何,通过我的搜索,我已经看到nchar不是C#数据类型,这很好,但它似乎不会为我转换为字符串。

Convert.ToString(reader["SerialNum"].ToString().Trim());

这是给我一个错误的部分。它说“不能隐式地将'string'转换为'int'。”

任何人都知道解决整个nchar问题的方法吗?

提前致谢!

埃利

[编辑]: 所以这就是整个方法......虽然我认为这里的任何其他内容都不会有所帮助。

private Row PopulateRow(SqlDataReader pReader)
    {
        Row CurrentRow = new Row();
        CurrentRow.sTransNum = Convert.ToInt32(reader["STransNum"].ToString().Trim());
        CurrentRow.serialNum = Convert.ToString(reader["SerialNum"].ToString().Trim());
        CurrentRow.itemTypeID = Convert.ToInt32(reader["ItemTypeID"].ToString().Trim());
        CurrentRow.fromLocation = Convert.ToInt32(reader["FromLocation"].ToString().Trim());
        CurrentRow.toLocation = Convert.ToInt32(reader["toLocation"].ToString().Trim());
        CurrentRow.units = Convert.ToInt32(reader["Units"].ToString().Trim());
        CurrentRow.serialMoveDate = Convert.ToDateTime(reader["SerialMoveDate"].ToString().Trim());
        CurrentRow.moveTypeID = Convert.ToInt32(reader["MoveTypeID"].ToString().Trim());
        CurrentKey.sTransNum = CurrentRow.sTransNum;
        CurrentRow.CompleteState = "OK";
        return CurrentRow;
    }

7 个答案:

答案 0 :(得分:3)

可能应该使用reader.GetString(ordinal)

reader.GetString(reader.GetOrdinal("SerialNum"))

如果结果中的值可以为null,请使用reader.IsDbNull(ordinal)

int ordinal = reader.GetOrdinal("SerialNum");
serial = reader.IsDbNull(ordinal) ? null : reader.GetString(ordinal);

答案 1 :(得分:1)

您正尝试将收到的值分配给int。检查要为其赋值的变量/属性的定义。

答案 2 :(得分:0)

Convert.ToString(reader["SerialNum"])

但您可能正在分配一个int变量。请更多代码。

答案 3 :(得分:0)

这里有些不对劲。

  1. 你要投两次。没有必要。
  2. C#不是weakly typed语言,因此您必须将转换结果放入另一个字符串中。
  3. 请尝试以下任一方式

    string strTmp = Convert.ToString(reader["SerialNum"]);
    strTmp = strTmp.Trim();
    

    string strTmp = reader["SerialNum"].ToString().Trim();
    

    我希望这会有所帮助。

答案 4 :(得分:0)

是完整的代码行给你一个错误吗?该错误表示您正在尝试转换为int。

答案 5 :(得分:0)

  

整行是CurrentRow.serialNum = Convert.ToString(reader ....);

我敢打赌CurrentRow.serialNum是一个整数。

如果这是正确的,取决于阅读器中的数据类型,其中一个将是您的解决方案:

CurrentRow.serialNum = Convert.ToInt32(reader["SerialNum"].ToString().Trim()); 
CurrentRow.serialNum = (int)reader["SerialNum"]; 

答案 6 :(得分:0)

这可能不是数据类型问题,而是NULL问题。验证serialNum是否可以为NULL。如果是这样,您可能需要使用GetSqlString或其他可以处理NULL情况的代码。