Я работаю с ASP.NET MVC 4, используя C# и SQL ServerВыберите NULL значение из таблицы SQL Server
Я выбор строки данных из следующей таблицы
CREATE TABLE [dbo].[Mem_Basic] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Mem_NA] VARCHAR (100) NOT NULL,
[Mem_Occ] VARCHAR (200) NOT NULL,
[Mem_Role] VARCHAR (200) NOT NULL,
[Mem_Email] VARCHAR (50) NULL,
[Mem_MPh] VARCHAR (15) NULL,
[Mem_DOB] DATE NULL,
[Mem_BGr] NCHAR (10) NULL,
[Mem_WAnn] DATE NULL,
[Mem_Spouse] VARCHAR (75) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
используя следующий код
public MemberBasicData GetMemberProfile(int id)
{
MemberBasicData mb = new MemberBasicData();
using (SqlConnection con = new SqlConnection(Config.ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Mem_Basic WHERE Id="+id+"", con))
{
try
{
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
if(reader.Read()==true)
{
mb.Id = (int)reader["Id"];
mb.Mem_NA = (string)reader["Mem_NA"];
mb.Mem_Occ = (string)reader["Mem_Occ"];
mb.Mem_Role = (string)reader["Mem_Role"];
mb.Mem_Email = (string)reader["Mem_Email"];
mb.Mem_MPh = (string)reader["Mem_MPh"];
mb.Mem_DOB = (Convert.ToDateTime(reader["Mem_DOB"]));
mb.Mem_BGr = (string)reader["Mem_BGr"];
mb.Mem_WAnn = (Convert.ToDateTime(reader["Mem_WAnn"]));
mb.Mem_Spouse = (string)reader["Mem_Spouse"];
}
}
catch (Exception e) { throw e; }
finally { if (con.State == System.Data.ConnectionState.Open) con.Close(); }
}
}
return mb;
}
Это показывает ошибку
Невозможно наложить объект типа «System.DBNull» на тип «System.String».
(Mem_Email
, MPh
.. и т.д. иногда содержат значение NULL
.. если значение равно нулю, я хочу вернуть нуль). Кто-нибудь, пожалуйста, помогите мне.
Не связанный с вашим вопросом (как у вас есть ответ ниже), но ваша попытка, поймать и, наконец, все излишне. Ловить и бросать бессмысленно (и усекает трассировку стека так, как вы ее реализовали), и, наконец, закрытие соединения, даже если ваше использование оператора 'use' будет обрабатывать это для вас уже. –
Использование разъема или ORM поможет здесь много. Лично, когда я слышу «C#» и «SQL Server», я думаю, что Entity Framework, но есть много альтернатив. – anaximander