salve ragazzi,
ho questo codice che si propone di effettuare una update:

protected void Button4_Click(object sender, EventArgs e)
{
if (TextBox6.Text == string.Empty ||TextBox6.Text.Length>1) //il codice che codifica lo stato civile è fatto da una sola lettera
Response.Write("specificare un codice valido");

else
{
DataBind();
string cmd = "UPDATE ha_stato_civile SET cod_stato_civile=@cod_stato_civile,data_variaz_sc= '+System.DateTime.Now+',flag_sc_corrente='s' WHERE ha_stato_civile.cod_persona=@cod_persona"; //------------>problema 2

SqlParameter cod_sc = new SqlParameter("@cod_stato_civile", SqlDbType.VarChar);
cod_sc.Value = Server.HtmlEncode(TextBox6.Text); //-------->problema 1

SqlParameter cod_pers = new SqlParameter("@cod_persona", SqlDbType.Int);
cod_pers.Value = Server.HtmlEncode(TextBox1.Text);

SqlConnection oConn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["dati_generali"].ConnectionString);
SqlCommand oCommand = new SqlCommand(cmd, oConn);
oCommand.Parameters.Add(cod_sc);
oCommand.Parameters.Add(cod_pers);

oConn.Open();
SqlDataReader reader = oCommand.ExecuteReader();
tabella = new DataTable();
tabella.Load(reader);
oCommand.Dispose();
oCommand = null;
oConn.Close();
GridView2.DataBind(); //aggiornami il gridview

TextBox5.Text = GridView2.Rows[0].Cells[0].ToString();//aggiornami la textbox che mostra lo stato civile...questo è un codice provvisorio perchè non riesco a mostrare nulla--------->problema 3
}
}

Ma ho dei problemi:

1)
il primo riguarda cod_sc.Value = Server.HtmlEncode(TextBox6.Text);
infatti se al posto di TextBox6.Text provo a mettere una dropdownlist (collegata ad una tabella contenente tutti i possibili stati civili) con questa sintassi:
miadrop.SelectedValue.ToString()
non mi fa alcun aggiornamento, mentre con la textbox6 funziona tutto! Ho anche provato con selecteditem ma nulla...


2)
come faccio a far vedere tramite la textbox5 il record subito aggiornato?

3)
come faccio ad impostare la data e l'ora attuali del sistema nella query di update? io scrivo nella stringa:
UPDATE ha_stato_civile SET cod_stato_civile=@cod_stato_civile,data_variaz_sc= '+System.DateTime.Now+',flag_sc_corrente='s' WHERE ha_stato_civile.cod_persona=@cod_persona
ma risponde:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
The statement has been terminated.

se qualcuno di voi potesse aiutarmi, gli sarei enormemente grato.. ci sto sbattendo la testa da ore, ed ora inizia a farmi male!
grazie in anticipo!


ps: uso sqlserver, c# e la tabella ha_stato_civile si compone di questi 4 campi:
cod_persona (si riferisce a una tabella 'cittadino')
cod_stato_civile (si riferisce a una 'tabella_decod_stato_civile')
data_variaz_sc (datetime)
flag_sc_corrente