salve,
flopic77 ha scritto:
string strCommand="INSERT INTO nometab (elencocampi) VALUES ('valori')";
se il codice e' veramente questo, e' probabile che dia errori...
presupponendo che "elencocampi" sia qualche cosa come ( colX, colY, colZ), e quindi un qualche cosa di valido, spero proprio che 'valori' lo sia altrettanto, quindi simile a VALUES ( intColX, 'varcharColY', 'varcharColZ');
e non una "stringa" contenente tutti i "valori"..
prendiamo ad esempio la l'entita'
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.Flopic77 (
Id int NOT NULL PRIMARY KEY,
Nome varchar(10) NOT NULL,
D_Nasc datetime NULL
);
GO
-- eseguire codice c#
SELECT * FROM dbo.Flopic77 ;
GO
DROP TABLE dbo.Flopic77;
ci sono almeno 2 modi diretti di eseguire una query di inserimento, l'utilizzo di parametri e l'utilizzo di un comando preparato diretto...
l'utilizzo dei parametri e' raccomandato in quanto ti consente un maggior controllo sui dati immessi, quindi eventuali validazioni che proteggano anche da SQL Injection...
tipicamente, il codice di inserimento potrebbe assomigliare a quanto segue
static void ExecDirect()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Server=(Local);Database=tempdb;Trusted_Connection=True;Persist Security Info=False";
con.Open();
// modo piu' corretto di eseguire comandi, visto che
// consente di verificare meglio il valore passato ai parametri
// e quindi anche evitare SQLInjection;
SqlParameter par = new SqlParameter();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "INSERT INTO dbo.Flopic77 (Id, Nome, D_Nasc) VALUES (@Id, @Nome, @D_Nasc);";
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandTimeout = 0;
cmd.Connection = con;
par = cmd.CreateParameter();
par.ParameterName = "@Id";
par.Direction = System.Data.ParameterDirection.Input;
par.SqlDbType = System.Data.SqlDbType.Int;
par.Size = 4;
par.Value = 1;
cmd.Parameters.Add(par);
par = new SqlParameter();
par = cmd.CreateParameter();
par.ParameterName = "@Nome";
par.Direction = System.Data.ParameterDirection.Input;
par.SqlDbType = System.Data.SqlDbType.VarChar;
par.Size = "Andrea".Length;
par.Value = "Andrea";
cmd.Parameters.Add(par);
par = new SqlParameter();
par = cmd.CreateParameter();
par.ParameterName = "@D_Nasc";
par.Direction = System.Data.ParameterDirection.Input;
par.SqlDbType = System.Data.SqlDbType.DateTime;
par.Value = DateTime.Parse("1965-10-30");
cmd.Parameters.Add(par);
cmd.ExecuteNonQuery();
cmd.Dispose();
cmd = null;
// modo "brutale" di eseguire un comando direttamente...
int Id = 2;
string Nome = "Pippo";
DateTime D_Nasc = DateTime.Parse("1977-01-01");
string commandText = string.Format("INSERT INTO dbo.Flopic77 (Id, Nome, D_Nasc) VALUES ({0} , '{1}', '{2}');", Id, Nome, D_Nasc.ToString("yyyy-MM-dd"));
cmd = new SqlCommand();
cmd.CommandText = commandText;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandTimeout = 0;
cmd.Connection = con;
cmd.ExecuteNonQuery();
cmd.Dispose();
cmd = null;
con.Close();
con = null;
}
saluti