If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

 
Go Back  dBforums > Database Server Software > DB2 > Invalid character found in a character string argument of the function "INTEGER".

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 11-17-10, 11:43
ksmclane ksmclane is offline
Registered User
 
Join Date: Nov 2010
Posts: 4
Invalid character found in a character string argument of the function "INTEGER".

I do not have direct access to the server to find the actual version info. I only know it is running on an AIX box.

I am trying to fix someone elses work, not sure where the problem lies. I have a small web portal that works fine for browsing the data, but when trying to do an update gives the above error.

I have this code in the <script> section of the page:
Code:
protected void DetailsView_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    {
        // Iterate though the values entered by the user and HTML encode 
        // the values. This helps prevent malicious values from being 
        // stored in the data source.
        for (int i = 0; i < e.NewValues.Count; i++)
        {
            if (e.NewValues[i] != null)
            {
                e.NewValues[i] = Server.HtmlEncode(e.NewValues[i].ToString());
            }
        }
    }
and this code in the body of the page:
Code:
<asp:SqlDataSource 
        ID="sqlDetails" runat="server" 
        Connectionstring="<%$ Connectionstrings:apples %>"
        ProviderName="<%$ Connectionstrings:apples.ProviderName %>" 
        
        SelectCommand="
            select 
             a.account_id,
             a.account_code,
             a.account_name,
             a.account_policy,
             a.account_target,
             a.account_workitem,
             a.start_date,
             a.kit_date,
             a.upgrade_date,
             a.approval_date,
             a.sunset_date,
             a.alert_flag,
             a.cirats_flag,
             a.report_flag,
             a.sample_flag,
             a.sample_rate,
             d.department_id,
             d.department_code
            from
             account a,
             department d
            where d.department_id = a.department_id
            and a.account_code = ?
        " 
        
        UpdateCommand="
            update account set 
             account_name = ?,
             account_policy = ?,
             account_target = ?,
             account_workitem = ?,
             kit_date = ?,
             upgrade_date = ?,
             approval_date = ?,
             sunset_date = ?,
             alert_flag = ?,
             cirats_flag = ?,
             report_flag = ?,
             sample_flag = ?,
             sample_rate = ?,
             department_id = ?
            where account_id = ?" 
			
			<UpdateParameters>
            <asp:Parameter Name="account_name" Type="string" />
            <asp:Parameter Name="account_policy" Type="string" />
            <asp:Parameter Name="account_target" Type="Int16" />
            <asp:Parameter Name="account_workitem" Type="string" />
            <asp:Parameter Name="kit_date" Type="DateTime" />
            <asp:Parameter Name="upgrade_date" Type="DateTime" />
            <asp:Parameter Name="approval_date" Type="DateTime" />
            <asp:Parameter Name="sunset_date" Type="DateTime" />
            <asp:Parameter Name="alert_flag" Type="string" />
            <asp:Parameter Name="cirats_flag" Type="string" />
            <asp:Parameter Name="report_flag" Type="string" />
            <asp:Parameter Name="sample_flag" Type="string" />
            <asp:Parameter Name="sample_rate" Type="Int16" />         
            <asp:Parameter Name="department_id" Type="Int16" />
            <asp:Parameter Name="account_id" Type="Int16" />
        </UpdateParameters>
I have never seen this way of building an SQL statement before. Strangely, sometimes the update works, and we can go into the database and update the field directly with no problem. I think there may be an issue with some of the fields having null values, but at this point I'm grasping at straws.

Any help will be appreciated.

Last edited by ksmclane; 11-17-10 at 11:48. Reason: Additional Info
Reply With Quote
  #2 (permalink)  
Old 11-17-10, 13:45
n_i n_i is offline
:-)
 
Join Date: Jun 2003
Location: Toronto, Canada
Posts: 4,449
Somewhere you are trying to put a non-numeric character into an integer table column. You will need to verify that the column data types in the table account match the parameter type definitions in your ASP code.
Reply With Quote
  #3 (permalink)  
Old 11-17-10, 13:52
ksmclane ksmclane is offline
Registered User
 
Join Date: Nov 2010
Posts: 4
Yes, I was able to figure that much out for myself. I have had the data types checked and they all match up.
Reply With Quote
  #4 (permalink)  
Old 11-17-10, 14:07
n_i n_i is offline
:-)
 
Join Date: Jun 2003
Location: Toronto, Canada
Posts: 4,449
Now all you need to do is to figure out into which of the four integer fields you are inserting non-numeric characters. Hint: a space (0x20) is a non-numeric character.
Reply With Quote
  #5 (permalink)  
Old 11-17-10, 14:16
ksmclane ksmclane is offline
Registered User
 
Join Date: Nov 2010
Posts: 4
Funny thing is, we are only updating a date field. All I can think is there is already something in the data, but that doesn't really make a whole lot of sense. Several of the Integer fields are empty to begin with. I just did an experiment on a backup copy. I populated all fields and still got the same error even though I made sure to enter integers where appropriate. The wonderful stack trace doesn't give any useful info such as which field is barfing.
Reply With Quote
  #6 (permalink)  
Old 11-17-10, 16:42
n_i n_i is offline
:-)
 
Join Date: Jun 2003
Location: Toronto, Canada
Posts: 4,449
Quote:
Originally Posted by ksmclane View Post
Funny thing is, we are only updating a date field.
Not sure why this is funny, but, according to the UPDATE statement you posted earlier, you are updating multiple columns of that table, possibly all of them.

I don't know how ASP handles data you retrieve from the table initially, but I'm almost sure that, unlike DB2, it does not distinguish between a NULL value and an empty string. If one of the integer columns contains a NULL value, it may be treated as an empty string in ASP, and if you later try to put it (the empty string, that is) back into the column DB2 won't be able to cast it into an integer. This is just one of the possible explanations.
Reply With Quote
  #7 (permalink)  
Old 11-17-10, 17:04
ksmclane ksmclane is offline
Registered User
 
Join Date: Nov 2010
Posts: 4
I meant funny strange, not funny ha-ha. , turns out I found another page with the same function using a master details data structure that had the same capability, and it works! I still haven't found the problem with the first page but it is no longer so urgent. I will have to do a stare and compare and see if I can find the why of it.
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On