6

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);

4 Answers 4

5
Type type = reader.GetFieldType(0);
Sign up to request clarification or add additional context in comments.

6 Comments

Can you elaborate more your answer please ?
i tried this one : string Type= reader["id_declarant"].GetFieldType(0).FullName; but it displays System.string
It's Type type = reader.GetFieldType(0); instead of string Type= reader["id_declarant"].GetFieldType(0).FullName; BTW, what is the data type of id_declarant coumn
yes the reader.GetFieldType(0) displays the DataType of each value in the row 0 of the reader ?? BTW id_declarant is nvarchar(7)
reader.GetFieldType(0) displays the first column's .net data type. So the data type of id_declarant in the database coresponds System.String type in C#
|
5

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 .

Comments

0

You can use GetDataTypeName() function to get the data type of the field

   String dataType = reader.GetDataTypeName(FIELD_INDEX);

Comments

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;
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.