hello!

i had the following line in my program

_dataRow["field"] = SqlString.Null;

_dataRow is of type DataRow and the associated field is of type varchar.

after saving this change, the column in my database has value "Null"
instead of the 'real' NULL!

you could then get the row by executing

SELECT * FROM mytable WHERE field = 'Null'

and not by

SELECT * FROM mytable WHERE field IS NULL

isn't that strange?


table:
create table DBTEST (timecode datetime, strfield varchar(100))
where column timecode is defined as primary key.

this is my testapp:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;

namespace DBProblem
{
     public class DBProblem
     {
          public static int Main(string[] args)
          {
               // DB connection
               SqlConnection Connection = new SqlConnection("Server
=;Database=;User ID=;Password=;Application Name=dbproblem");
               Connection.Open();

               // Dataset befüllen
               SqlCommand Command = new SqlCommand("insert into DBTEST
(timecode, strfield) values (@timecode, @strfield)", Connection);
               Command.Parameters.Add(new SqlParameter("@timecode",
SqlDbType.DateTime));
               Command.Parameters["@timecode"].Value = DateTime.Now;
               Command.Parameters.Add(new SqlParameter("@strfield",
SqlDbType.VarChar));
               Command.Parameters["@strfield"].Value = SqlString.Null;
               Command.ExecuteNonQuery();

               // row was inserted with column strfield containing NULL

               Command = new SqlCommand("select * from DBTEST",
Connection);
               SqlDataAdapter _DataAdapter = new SqlDataAdapter(Command);
               SqlCommandBuilder _CommandBuilder = new SqlCommandBuilder
(_DataAdapter);

               DataSet _DataSet = new DataSet();

               _DataAdapter.Fill(_DataSet, "DBTEST");

               DataRow _DataRow = _DataSet.Tables["DBTEST"].Rows[0];
               _DataRow["strfield"] = SqlString.Null;
               _DataAdapter.Update(_DataSet, "DBTEST");

               // now, column strfield of first row contains "Null"

               Connection.Close();

               return 0;
          }
     }
}
You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to