我正在尝试获取每个列的数据类型以进行一些验证
我已经尝试了getSchemaTable
,但它只给了我没有值的表的模式。
例如,我的数据库中有一个表,列名为id_declarant
。
我想从id_declarant
检索数据类型和值的大小。
这是代码:
comm.Connection=new SqlConnection(connectionString);
String sql = @"
SELECT *
FROM id_declarant,declarant
WHERE (declarant.Nom_pren_RS='" + textBox1.Text + "')
and (id_declarant.mat_fisc=declarant.mat_fisc) ";
comm.CommandText = sql;
comm.Connection.Open();
string mat_fisc;
string clé_mat_fisc;
string categorie ;
string num_etab_sec ;
string activite;
StringBuilder sb = new StringBuilder();
String Nom = textBox1.Text;
using (SqlDataReader reader = comm.ExecuteReader())
{
while (reader.Read())
{
//here i want to know how to retrieve the reader[0].Type and Size to do the verification
mat_fisc = reader[0].ToString();
clé_mat_fisc = reader["clé_mat_fisc"].ToString();
categorie = reader["categorie"].ToString();
num_etab_sec = reader["num_etab_sec"].ToString();
activite = reader["activite"].ToString();
sb.Append("EF" + mat_fisc + clé_mat_fisc + categorie + num_etab_sec + textBox2.Text + textBox3.Text + Nom + activite);
答案 0 :(得分:3)
Type type = reader.GetFieldType(0);
答案 1 :(得分:2)
请使用GetTableSchema函数。
SqlDataReader reader= command.ExecuteReader();
using (var schemaTable = reader.GetSchemaTable())
{
foreach (DataRow row in schemaTable.Rows)
{
string ColumnName= row.Field<string>("ColumnName");
string DataTypeName= row.Field<string>("DataTypeName");
short NumericPrecision= row.Field<short>("NumericPrecision");
short NumericScale= row.Field<short>("NumericScale");
int ColumnSize= row.Field<int>("ColumnSize");
Console.WriteLine("Column: {0} Type: {1} Precision: {2} Scale: {3} ColumnSize {4}",
ColumnName, DataTypeName, NumericPrecision, scale,ColumnSize);
}
}
使用表架构,您可以使用c#。
获取所有与列相关的属性谢谢。
答案 2 :(得分:0)
您可以使用GetDataTypeName()函数来获取字段的数据类型
String dataType = reader.GetDataTypeName(FIELD_INDEX);
答案 3 :(得分:0)
public string ReadString(IDataReader reader, string columnName) {
string myString = "";
var index = reader.GetOrdinal(columnName);
var fieldType = reader.GetFieldType(index);
if (fieldType.FullName.Contains("Guid"))
{
myString = reader.IsDBNull(index) ? "" : reader.GetGuid(index).ToString();
}
else
{
myString = reader.IsDBNull(index) ? "" : reader.GetString(index);
}
return myString;
}