我有一個Windows應用程序窗體,我想插入文本框值到SQL數據庫,其中一些是強制性的,其他人被允許插入空值。但我不能在數據庫中插入空值(在int的情況下)。插入空值到SQL表中
CREATE TABLE [dbo].[tblReg](
[Reg_ID] [int] IDENTITY(1,1) NOT NULL,
[Sep_Status] [varchar](50) NOT NULL,
[Pop_Grp] [varchar](50) NOT NULL,
[Child_Address] [varchar](50) NULL,
[Child_AgeYr] [int] NULL
) ON [PRIMARY]
這是我的C#代碼
private void Children_Save_Click(object sender, EventArgs e)
{
ss = SepStat.Text.ToString().Trim();
pg = PopGr.Text.ToString().Trim();
Add = ChildAdd.Text.ToString().Trim();
yr = Convert.ToInt32(ChildDOBYr.Text);
createdid=SaveChilDetails(ss,pg,Add,yr);
}
public int SaveChilDetails(string ss, string pg,string Add,int yr)
{
string constring =Config.GetConnection();
using (SqlConnection con=new SqlConnection(constring))
{
using (SqlCommand cmd = new SqlCommand("Insert into tblReg(Sep_Status,Pop_Grp,Child_Address,Child_AgeYr) output INSERTED.Reg_ID values(@ss,@pg,@Add,@yr)", con))
{
cmd.Parameters.AddWithValue("@ss", ss);
cmd.Parameters.AddWithValue("@pg", pg);
if (Add == "") //Problems are here
{ cmd.Parameters.AddWithValue("@add", null); }
else
{ cmd.Parameters.AddWithValue("@Add", Add); }
if(yr==0)
{cmd.Parameters.AddWithValue("@yr", null);}
else
{cmd.Parameters.AddWithValue("@yr", yr);} //***********************
if (con.State != ConnectionState.Open)
con.Open();
int createid = (int)cmd.ExecuteScalar();
if (con.State == System.Data.ConnectionState.Open) con.Close();
return createid;
}
}
}
爲什麼你必須在默認情況下傳遞null null? –
但它沒有采取默認空值在int的情況下 – neel
我認爲問題是在轉換Int部分 – neel