我有一些数据库和表。我正在尝试检测每一列的数据类型并根据数据类型创建随机变量?
例如:
col1 : int
col2 : nvarchar(max)
col3 : bit
我需要检测代码中的每种数据类型并创建用于插入的随机变量。
我是否应该为此工作创建一种方法,该方法检查所有数据类型并生成变量?喜欢:
if(datatype.Equals("int"))
random.Next();
else if(datatype.Equals("string"))
...
有什么简单的方法吗?
答案 0 :(得分:1)
这是一种方法:
var random = new Random();
var factory = new Dictionary<Type, Func<object>>()
{
{ typeof(int), () => random.Next() },
{ typeof(string), () =>
{
var bytes = new byte[16];
random.NextBytes(bytes);
return Convert.ToBase64String(bytes);
}
},
{ typeof(DateTime), () => DateTime.Now.AddDays((random.NextDouble() - 0.5) * 100) },
};
然后您可以执行以下操作:
var datatype = typeof(string);
var output = factory[datatype]();
Console.WriteLine(output);
我得到eyqQ1EdMDTsR8Ny8kS73Hg==
作为示例输出。
您只需要继续构建所需的所有类型。
答案 1 :(得分:0)
没有内置的“ SQL Server数据类型-> .NET数据类型”映射表;因此,您必须自己进行映射。
答案 2 :(得分:0)
Random类提供Random.Next()
,Random.NextBytes()
和Random.NextDouble()
方法。 Random.Next()方法返回一个随机数,Random.NextBytes()
返回一个填充有随机数的字节数组,而Random.NextDouble()
返回一个介于0.0和1.0之间的随机数。
Random.Next()方法具有三种重载形式,允许您设置随机数的最小和最大范围。
以下代码返回一个随机数。
int num = random.Next();
以下代码返回小于1000的随机数。
int num = random.Next(1000);
以下代码返回最小和最大范围之间的随机数。生成两个数字之间的随机数
public int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
您甚至可以结合使用两种方法-RandomNumber和RandomString来生成随机字符串和数字的组合。
// Generate a random string with a given size
public string RandomString(int size, bool lowerCase)
{
StringBuilder builder = new StringBuilder();
Random random = new Random();
char ch;
for (int i = 0; i < size; i++)
{
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
builder.Append(ch);
}
if (lowerCase)
return builder.ToString().ToLower();
return builder.ToString();
}
要了解映射,请遵循此Link
使用GetType()
方法来了解C#中的数据类型。您可以了解它Here