我正在使用SSIS中的C#从SQL Server中的表中读取行。当我遍历每一列时,我想从表中获取该字段的数据类型。这是我的代码:
$directory = "C:\example\"
Get-Mailbox –Server "MYserverName" | Foreach-Object {
$mailboxName = $_.Name
Get-MailboxPermission | Format-List |
Out-File (Join-Path $directory "MailboxUser-$mailboxName.txt")
}
第一个问题是当我在数据库的位字段上执行string s = "";
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(@"C:\Users\cassf\Documents\Tyler Tech\FL\ncc3\CM_Property.csv", true))
{
foreach (PropertyInfo inputColumn in Row.GetType().GetProperties())
{
if (!inputColumn.Name.EndsWith("IsNull"))
{
try
{
s += Convert.ToString(inputColumn.GetValue(Row,null).ToString());
}
catch
{
some code
}
}
}
}
}
时,它会将值更改为Convert.ToString()
或True
。我想要False
或1
的实际值。
因此,为了尝试修复此问题,我想检查0
的字段类型,看起来脚本正在从一个位转换为Boolean
。然后我可以手动放回boolean
或1
。我希望直接从数据库中获取值。
非常感谢任何帮助。
谢谢, 肯特
答案 0 :(得分:0)
我需要实现一个帮助函数,以便在需要时进行自己的转换,如下所示:
Access-Control-Allow-Origin
对于布尔值,您只需将其转换为Int,将int转换为字符串(您将以字符串格式获得1或0)。
根据您对string s = "";
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(@"C:\Users\cassf\Documents\Tyler Tech\FL\ncc3\CM_Property.csv", true))
{
foreach (PropertyInfo inputColumn in Row.GetType().GetProperties())
{
if (!inputColumn.Name.EndsWith("IsNull"))
{
try
{
s += ValueToString(inputColumn.GetValue(Row,null));
}
catch
{
some code
}
}
}
}
}
protected string ValueToString(object value)
{
if (value == null)
throw new ArgumentNullException("I don't know how to convert null to string, implement me!");
switch (Type.GetTypeCode(value.GetType()))
{
// Any kind of special treatment, you implement here...
case TypeCode.Boolean: return Convert.ToInt16(value).ToString();
default: return value.ToString(); // ...otherwise, just use the common conversion
}
}
变量的处理方式,您可能希望使用引号括起字符串值,如果是,则可以在s
方法中执行此操作。