如果已经提出并回答了这个问题,请原谅我。我只是花了一些时间寻找我的问题,而我似乎无法找到它。
无论如何,我在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;
}
答案 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)
这里有些不对劲。
请尝试以下任一方式
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情况的代码。