c# - Pass getdate() in dynamic query as parameter -
good morning everyone! building dynamical query parameters seen in code below.
c.open(); string columns = "("; string values = "("; foreach (datagridviewcolumn column in rootdataview.columns) { if (virtualcolumns.contains(column.name)) { } else { columns += column.name + ","; values += "@" + column.name + " ,"; } } columns = columns.substring(0, columns.length - 1) + ")"; values = values.substring(0, values.length - 1) + ")"; sqlcommand command = new sqlcommand("insert " + tablename + " " + columns + " values " + values, c); foreach (datagridviewcolumn column in rootdataview.columns) { if (virtualcolumns.contains(column.name)) { } else { if (column.name != "timefrom") { command.parameters.addwithvalue("@" + column.name, editedrow.cells[column.name].value); } else { command.parameters.addwithvalue("@" + column.name, system.datetime.now); } } } command.executenonquery();
but have encountered problem on line
command.parameters.addwithvalue("@" + column.name, system.datetime.now);
i need synchronize time sql server, need somehow pass getdate()
parameter, when enter this
command.parameters.addwithvalue("@" + column.name, "getdate()");
it being sent string/varchar not call function.
i know if there way pass function parameter, or if need replace @timefrom
part of query string.
edit:please note bold part, question - asking yes/no , explanation why
you have try this:
c.open(); string columns = "("; string values = "("; foreach (datagridviewcolumn column in rootdataview.columns) { if (virtualcolumns.contains(column.name)) { } else { columns += column.name + ","; if (column.name != "timefrom") { values += "@" + column.name + " ,"; } else { //change in string values += "getdate() ,"; } } } columns = columns.substring(0, columns.length - 1) + ")"; values = values.substring(0, values.length - 1) + ")"; sqlcommand command = new sqlcommand("insert " + tablename + " " + columns + " values " + values, c); foreach (datagridviewcolumn column in rootdataview.columns) { if (virtualcolumns.contains(column.name)) { } else { if (column.name != "timefrom") { command.parameters.addwithvalue("@" + column.name, editedrow.cells[column.name].value); } } } command.executenonquery();
basically, not treat timefrom parameter use getdate() set it's value in insert.
sql server , client library using, not support passing parameters containing sql. reason why construct not work:
command.parameters.addwithvalue("@" + column.name, "getdate()");
the thing allowed pass in addwithvalue translate literal sql value.
Comments
Post a Comment