Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1442
  • Last Modified:

Format an ADO.NET boolean as "0" or "1"

I am converting answers for a survey to a specified format. I need to handle boolean questions, which can be skipped. Here is the rubric

ADO.NET Value     Output
DBNull                  ""
true                     "1"
false                    "0"

Can someone come up with something simpler than this:

[code]
        const string missing = "";
        private static string GetBoolOutputFromDataRowView(DataRowView drv, string columnName)
        {
            object obj = drv[columnName];
            if (obj == System.DBNull.Value)
                return missing;
            else
                return ((bool)obj == true) ? "1" : "0";
        }
[/code]
0
anyoneis
Asked:
anyoneis
  • 3
  • 3
  • 3
2 Solutions
 
NightmanCTOCommented:
That looks good enough to me. Do you have any specific concerns about this approach?
0
 
NightmanCTOCommented:
A simpler approach could be to do this in SQL, and not have to handle it in ADO at all.

e.g.
SELECT CASE  WHEN MyColumn IS NULL THEN 'Missing' WHEN MyColumn=1 THEN '1' ELSE '0' END result FROM MyTable
0
 
anyoneisAuthor Commented:
Thanks, Nightman. I have the feeling I am overlooking some formatting idiom or apparatus, so I thought I would ask.

Also, I don't have any control over the SQL, I am getting a dataset and datatable from the vendors library, so changing the SQL is out of the question.

David
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
NightmanCTOCommented:
The only thing that I would do would be to place curly braces around the if else statements ( if {} else {}). This doesn't change the execution path of your code, but it makes it 100% clear to anyone that is reading your code where the scope is.

There are plenty here that will disagree with me, but from experience working in large teams with shared source, having everything clearly defined makes integration, maintenance and debugging easier.
0
 
jagadeeshbandlamudiCommented:
You want to return either true or False right, then why do you want to use  'string missing = "" '. If anything other than 1 just return False
0
 
anyoneisAuthor Commented:
No, I need "missing". if the column is null, I want to return an indication that the field was missing. This might be a "." for a SAS data file, or a blank for a pipe-delimited file.

What I was looking for was some revelation on formatting nullable types, or an approach with a custom format provider.
0
 
jagadeeshbandlamudiCommented:
Then I guess whatever you are doing is right.. This might be of some help to you
  \
            public type format(DbType dbType)
              {
                     switch(dbType)
                         case DbType.Boolean: return typeof(bool);
                          break;
0
 
jagadeeshbandlamudiCommented:
public type format(DbType dbType)
              {
                     switch(dbType)
                         case DbType.Boolean: return typeof(bool);
                          break;
                       default:
                             return typeof(string);      
}
0
 
anyoneisAuthor Commented:
I guess we are done with this. Thanks for your input, everyone!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now