Ajuda com c#

Ta dando erro ao fazer um insert no BD nesse sql aqui

sql = “INSERT INTO clientes (nome,email,telefone,endereco,idade,cidade,estado,sexo)”
+ " VALUES (’" + usuario.Nome + “’” + usuario.Email+"’"+usuario.Telefone+"’"+usuario.Endereco+"’"
+usuario.Idade+"’"+usuario.Cidade+"’"+usuario.Estado+"’"+usuario.Sexo+"’)";

ta dizendo que tem um erro de aspas perto do segundo campo, alguem me ajuda?

ERRO MAIS DETALHADO

Não foi possivel cadastrar!System.Data.SqlClient.SqlException (0x80131904): Sintaxe incorreta perto de ‘testeteste’.

Aspas não fechadas após a cadeia de carateres ‘)’.

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)

at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)

at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout)

at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)

at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

at Agenda.PessoaDao.insert(Pessoa usuario) in c:\Users\nuke\Documents\Visual Studio 2012\Projects\Agenda\Agenda\PessoaDao.cs:line 31

ClientConnectionId:7f8f98e2-5300-40d0-ba48-baf7acfe498b

OK

Cara, EVITE A TODO CUSTO o uso de strings concatenadas.

  1. Você é alvo fácil de SQL Injection;
  2. Olha que nhaca que fica o código pra ler depois e dar manutenção, não acha?

Faça o uso de parâmetros.

INSERT INTO clientes (nome, email, telefone, endereco, idade, cidade, estado, sexo) VALUES (@ParamNome, @ParamEmail, @ParamTelefone, @ParamEndereco, @ParamIdade, @ParamCidade, @ParamEstado, @ParamSexo);

No seu objeto SqlCommand, use o método AddParameter para adicionar os valores corretamente.

Agora, no seu caso aí, você não separou os valores por vírgula.

Quando o certo é:

Obrigado cara ajudou e resolveu meu problema, mas aproveitando o topico, como faço para ao 1 clique em uma linha do data grid preencher os textbox.
um exemplo simples em java seria :

int linha_selecionada = table.getSelectedRow();
			tf_teste = table.getValueAt(linha_selecionada, 0).toString();
			tf_nome.setText(table.getValueAt(linha_selecionada, 1).toString());

isso ai ja resolve meu problema em java, e em c# como fica???

Haha, que bom que deu certo.

Cara, faz assim: cria um outro tópico com esse assunto que eu respondo lá.
É bom porque facilita para quem tiver a mesma dúvida!

ok topico feito