c# - 如何获取列的类型并在c#中使用它
问题描述
我想在我的 c# 代码中的 access 数据库中创建一个插入函数,我希望这个函数能够获取类似于我的数据库中的列类型的参数
我试图制作一个列表并在其中添加列类型,但我想知道:
1- 如何使类型(插入函数的参数)等于 list_types
2-如果我想在另一个代码中使用我的类型,如何将运行时类型转换为普通类型 int、string
partial class Program
{
public void insert(params object[] types)
{
}
static List<object> list_types = new List<object>();
static void Main(string[] args)
{
cmd.Connection = conn;
conn.Open();
cmd.CommandText = "SELECT * FROM students";
reader = cmd.ExecuteReader();
// add columns types in list to use it in parametrs of insert function
for (int i = 0; i < reader.FieldCount; i++)
{
if (reader.GetFieldType(i).Name == "Int32")
{
list_types.Add(new int());
}else if(reader.GetFieldType(i).Name == "String")
{
list_types.Add("any value because 'new string()' throw error (i wanna type only not value)");
}
}
//printing types of elements of list type
foreach(var item in list_types)
{
Console.WriteLine(item.GetType().ToString());
}
while (reader.Read())
{
Console.WriteLine(reader[0] + " " + reader[1]);
}
conn.Close();
Console.ReadKey();
}
}
谢谢 :)
解决方案
你没有使用类型......你正在做这个奇怪的把一个类型变成一个字符串,然后再变成一个类型 mumbo-jumbo。
跳过所有这些怎么样:
List<Type> types = new List<Type>();
for(int fieldIndex = 0; fieldIndex < reader.FieldCount; fieldIndex++) {
types.Add(reader.GetFieldType(fieldIndex));
}
然后将它们打印到控制台时:
foreach(Type type in types) {
Console.WriteLine($"{type.ToString()}");
}
推荐阅读
- php - PHP in_array() 总是返回 false
- android - 项目包含多个android模块时不生成dagger测试组件
- android - Android Firebase 登录无效的 idToken
- java - 使用 Postman 通过 Socket 传递 JSON 时如何修复错误
- apache - 在此服务器上找不到请求的 URL /install/index
- angular - Angular 7 - 从数据库中的字节显示图像
- python - 检查字符串中连续单词的首字母是否匹配另一个字符串的首字母缩写词
- swift - 为什么单个展开 segue 具有不同的行为?
- python - 如何将 Micropython 上的电机导入 DFRobot Quad Motor Shield
- python - 如果每个 ec2 实例不存在,请在其上创建一个标签。如果存在,则使用新值更新标签