Type type = reader.GetFieldType(0);
How to get the DataType and Size of a column using the SqlDataReader?
-
01-06-2022 - |
Question
i am trying to get the data type of each column given to do some verification
i already tried the getSchemaTable
but it only gives me the schema of a table without values.
For example , i have a table in my database and a columnname : id_declarant
.
I want to retrieve the datatype and Size of a value from id_declarant
.
Here is The code :
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);
Solution
OTHER TIPS
Please use function 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, NumericScale, ColumnSize);
}
}
Using Table schema , you can get all column related property using c# .
Thanks .
You can use GetDataTypeName() function to get the data type of the field
String dataType = reader.GetDataTypeName(FIELD_INDEX);
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;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow