c# - how to prevent allowing null values in a table -


i have program has 11 variable need inserted sql 2008 express db. works until variables can null null. sql not data. here code , appreciate can help:

 private void postdatatoserver()        {            string connectionstring = @"data source=luckytiger\sqlexpress;initial catalog=john;integrated security=true";            sqlconnection con = new sqlconnection(connectionstring);            con.open();            textbox1.text = "connection made";            sqlcommand cmd = con.createcommand();            string str = "";            str += "insert parsed(date, gal, sys, sl, st, pn, playn, sym, rk, all, rel)";            str += "values(@date, @gal, @sys, @sl, @st, @pn, @playn, @sym, @rk, @all, @rel)";            sqlcommand cmd = new sqlcommand(str, con);            cmd.commandtype = commandtype.text;            cmd.parameters.add(new sqlparameter("@date", uegparser.strtime));            cmd.parameters.add(new sqlparameter("@gal", convert.toint16(uegparser.strgalaxynum)));            cmd.parameters.add(new sqlparameter("@sys", convert.toint16(uegparser.strsystemnum)));            cmd.parameters.add(new sqlparameter("@sl", uegparser.intslot));            cmd.parameters.add(new sqlparameter("@st", uegparser.intslottype));            if (uegparser.strplanetname == "")                cmd.parameters.add(new sqlparameter("@pn", sqldbtype.nvarchar).value = dbnull.value);            else                cmd.parameters.add(new sqlparameter("@pn", uegparser.strplanetname));            if (uegparser.strplayername == "")            {                cmd.parameters.add(new sqlparameter("@playn", dbnull.value));                textbox2.text = "null player name";            }            else            {                cmd.parameters.add(new sqlparameter("@playn", uegparser.strplayername));            }            if (uegparser.strsymbols == "")                cmd.parameters.add(new sqlparameter("@sys", dbnull.value));            else                cmd.parameters.add(new sqlparameter("@sym", uegparser.strsymbols));            if (uegparser.strrank == "")                cmd.parameters.add(new sqlparameter("@rk", dbnull.value));            else                cmd.parameters.add(new sqlparameter("@rk", uegparser.strrank));            if (uegparser.stralliance == "")                cmd.parameters.add(new sqlparameter("@all", dbnull.value));            else                cmd.parameters.add(new sqlparameter("@all", uegparser.stralliance));            cmd.parameters.add(new sqlparameter("@rel", uegparser.intrelationship));             cmd.executenonquery();            con.close();            textbox2.text = "connection closed";        } 

you should reconsider how read data spreadsheet. apparently put whole sheet 1 big datatable , iterate on this. should split datareading, such read first 2 columns 1 datatable , remaining 5 columns second datatable. iterate on 2 datatables separately , save contained rows database.

if want prohibit create rows null values, check values null before insert.

 if (!string.isnullorempty(id) && !string.isnullorempty(name)) {     cmd = new sqlcommand( ....);     cmd.executenonquery();  } 

additionally hints:

  1. take @ parametrized , prepared queries, make code lot more secure.
  2. you not need open , close sql connection every single command. can open before loop, create , execute commands, , close after loop, when finished.
  3. you missing first row of data. vast majority of collections in c# start @ index 0.

edit

for request, added null checks code. but don't think should way! mentionioned above, should split datatable 2 tables, such each of them contains relevant rows. , should have @ igor's answer on how create parameterized queries! , take account other hints above. , finally, don't mean rude, should grab book or tutorials web , learn basics, able understand anwswers question.

protected void btn_insert_click(object sender, eventargs e)     {          dataset ds = new dataset();         ds = (dataset)session["dtset"];          (int = 1; < ds.tables[0].rows.count; i++)         {              string id = ds.tables[0].rows[i][0].tostring();             string name = ds.tables[0].rows[i][1].tostring();              sqlconnection con = new sqlconnection(connstr);             sqlcommand cmd;             if (!string.isnullorempty(id) && !string.isnullorempty(name)) {                 cmd = new sqlcommand("insert tbl1(id,name) values ('" + id + "','" + name + "')", con);                 con.open();                 int j= cmd.executenonquery();                 con.close();             }              string id1 = ds.tables[0].rows[i][2].tostring();             string name1 = ds.tables[0].rows[i][3].tostring();             string vehicletypeid = ds.tables[0].rows[i][4].tostring();             string vehicletype = ds.tables[0].rows[i][5].tostring();             string capacity = ds.tables[0].rows[i][6].tostring();               if (!string.isnullorempty(id1) && !string.isnullorempty(name1) && !string.isnullorempty(vehicletypeid) && !string.isnullorempty(vehicletype) && !string.isnullorempty(capacity)) {                 string insquery = "insert tbl2(id,name,subject,status,review) values ('" + id1 + "','" + name1 + "','" + subject+ "','" + status+ "','" + review+ "')";                 cmd = new sqlcommand(insquery,con);                 con.open();                 int k=  cmd.executenonquery();                 con.close();             }         }     }  

Comments