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:
- take @ parametrized , prepared queries, make code lot more secure.
- you not need open , close sql connection every single command. can open before loop, create , execute commands, , close after loop, when finished.
- 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
Post a Comment