Why values of array are null in this case?

I am dynamically creating SQL and setting values into them as shown

public static void main(String args[])
    {
        try
        {
        String vendor_brand_id = "3000";
         String reqstr = "popcorn";
         String category_id = "11";
            PreparedStatement preparedStatement = null;

            String fixedvalues[] = new String[10];
            String inputStr[] = reqstr.split("@");
            for(int j=0;j<inputStr.length;j++)
            {
                fixedvalues[j]=inputStr[j];
                System.out.println("jii"+fixedvalues[j]);

            }
            Connection dbConnection = null;
            String updateTableSQL = "UPDATE category_dev SET T1 = ? , T2 = ? , T3 = ? , T4 = ? , T5 = ? , T6=? , T7= ? , T8 = ? , T9 = ? , T10 = ? , vendor_brand_id = ? where category_id = ?";
            dbConnection = DBConnection.getDBConnection();
            preparedStatement = dbConnection.prepareStatement(updateTableSQL);
            for (int i = 0; i < fixedvalues.length; i++) {
                preparedStatement.setString(1, fixedvalues[i]);
                preparedStatement.setString(2, fixedvalues[i]);
                preparedStatement.setString(3, fixedvalues[i]);
                preparedStatement.setString(4, fixedvalues[i]);
                preparedStatement.setString(5, fixedvalues[i]);
                preparedStatement.setString(6, fixedvalues[i]);
                preparedStatement.setString(7, fixedvalues[i]);
                preparedStatement.setString(8, fixedvalues[i]);
                preparedStatement.setString(9, fixedvalues[i]);
                preparedStatement.setString(10, fixedvalues[i]);
                preparedStatement.setString(11, vendor_brand_id);
                preparedStatement.setString(12, category_id);
            }

            System.out.println(preparedStatement);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

But the issue i am facing here is that the values are being set as null

could anybody please let me know why

The sql that is being formed here is

UPDATE category_dev SET T1 = null , T2 = null , T3 = null , T4 = null , T5 = null , T6=null , T7= null , T8 = null , T9 = null , T10 = null , vendor_brand_id = '3000' where category_id = '11'
Jon Skeet
people
quotationmark

Well, you're only populating fixedValues with as many values as are in inputStr:

for(int j=0;j<inputStr.length;j++)
{
    fixedvalues[j]=inputStr[j];
    System.out.println("jii"+fixedvalues[j]);
}

You're then running over all 10 elements of fixedValues and for each value, setting all the first to parameters in your prepared statement to that value. This means if inputStr has less than 10 values, at the end of your loop all the prepared statement parameters will be null.

I strongly suspect that your prepared statement loop preparation should actually be:

for (int i = 0; i < fixedvalues.length; i++) {
    preparedStatement.setString(i, fixedvalues[i]);
}
preparedStatement.setString(11, vendor_brand_id);
preparedStatement.setString(12, category_id);

So each prepared statement parameter ends up with a different value from fixedvalues. Surely that's what you really intended...

people

See more on this question at Stackoverflow