Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

amanda12

[Resolvido] erro no string.format

Recommended Posts

Pessoal to usando um metodo que aprendi aki mas não está dando certo no insert veja

 

public partial class Form1 : Form
	{
		SqlConnection Conn;
		SqlCommand Comm;
		SqlDataAdapter DtAdapter;
		SqlDataReader DtReader;
		public Form1()
		{
			InitializeComponent();
		}

		private void Form1_Load(object sender, EventArgs e)
		{
			string a1 = "bbb";
			string b2 = "ccc";

			Conn = new SqlConnection("Data Source=CPD06;Initial Catalog=Northwind;Integrated Security=True");
			Conn.Open();
			label2.Text = Conn.State.ToString();


			//Comm = new SqlCommand("Select LastName from Employees", Conn);

			string sql = string.format("INSERT INTO Employees (LastName,FirstName) VALUES('{0}','{1}'", a1, b2);
			Comm.ExecuteNonQuery();

			//DtReader = Comm.ExecuteReader();

			/*while(DtReader.Read())
			{
				label3.Text = DtReader[0]+"\n";
			}*/
			//DtReader.Close();
			Conn.Close();
		}
	}

 

Como posso fazer esse insert?

Compartilhar este post


Link para o post
Compartilhar em outros sites

string sql = string.format("INSERT INTO Employees (LastName,FirstName) VALUES('{0}','{1}'", a1, b2);
Comm = new SqlCommand(sql, Conn);
Comm.ExecuteNonQuery();

Faltou setar o comando SQL no Command.

Quando ocorrer esse tipo de situação, coloque a linha que deu erro e qual a mensagem de erro, facilita :D

 

Att,

Guilherme Oenning.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma boa prática ao construir comandos sql é prepará-los antes de executar para evitar possíveis ataques ao banco de dados:

(o método AddWithValue é suportado a partir do Framework 2.0)

 

using (SqlConnection connection = new SqlConnection ("Data Source=CPD06;Initial Catalog=Northwind;Integrated Security=True"))
{
	connection.Open();
	using (SqlCommand command = new SqlCommand("INSERT INTO Employees (LastName,FirstName) VALUES(@a1, @a2)"))
	{
		// Preparar os parâmetros antes de executar o comando evita possíveis ataques ao banco de dados
		command.Parameters.AddWithValue("@a1", a1);
		command.Parameters.AddWithValue("@a2", a2);

		command.ExecuteNonQuery();
	}
	connection.Close();
}

É um método mais burocrático porém menos trabalhoso e menos confuso do que manipulação de strings.

Esse é o melhor método que conheço para se inserir valores ao banco com segurança.

Usar "using" também é sempre uma boa opção para ter certeza que os comandos que necessitam ser destruídos sejam despejados da memória após o uso.

 

Espero que tenha ajudado em algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Flávio eu fiz assim:

 

public partial class Form1 : Form
	{
		SqlConnection Conn;
		SqlCommand Comm;
		/*SqlDataAdapter DtAdapter;
		SqlDataReader DtReader;*/
		public Form1()
		{
			InitializeComponent();
		}

		private void Form1_Load(object sender, EventArgs e)
		{
		   /* SqlDataAdapter da = new SqlDataAdapter ("select * from Employee",Conn);
				DataSet ds = new  
				DataSet();
			da.Fill(ds);
			string campo;
				
			
			
			foreach(DataRow linha in ds.Tables[0])
					{
					   campo = linha["LastName"].ToString();
					}
		 */
			using (SqlConnection connection = new SqlConnection("Data Source=CPD06;Initial Catalog=Northwind;Integrated Security=True"))
			{
				connection.Open();
				string a1 = "sdfsf";
				string a2 = "qeqwe";
				using (SqlCommand command = new SqlCommand("INSERT INTO Employees (LastName,FirstName) VALUES(@a1, @a2)"))
				{
					// Preparar os parâmetros antes de executar o comando evita possíveis ataques ao banco de dados
					command.Parameters.AddWithValue("@a1", a1);
					command.Parameters.AddWithValue("@a2", a2);

					Comm.ExecuteNonQuery();
				}
				connection.Close();
			}
		}
	}

e dá erro no Comm.ExecuteNonQuery();

PQ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Refiz o seu exemplo e coloquei assim;

 

using (SqlConnection connection = new SqlConnection("Data Source=CPD06;Initial Catalog=Northwind;Integrated Security=True"))
			{
				connection.Open();
					string a1 = "ddd";
					string a2 = "ççl";
				using (SqlCommand command = new SqlCommand("INSERT INTO Employees (LastName,FirstName) VALUES(@a1, @a2)"))
				{

					// Preparar os parâmetros antes de executar o comando evita possíveis ataques ao banco de dados
					command.Parameters.AddWithValue("@a1", a1);
					command.Parameters.AddWithValue("@a2", a2);

					command.ExecuteNonQuery();
				}
				connection.Close();
			}

 

Ai ele retorna o erro assim:

 

ExecuteNonQuery: Connection property has not been initialized.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perdão pelo erro, Faltou a conexão "connection" ao instanciar o SqlCommand

Depois de VALUES(@a1, @a2)

 

using (SqlCommand command = new SqlCommand("INSERT INTO Employees (LastName,FirstName) VALUES(@a1, @a2)", connection))

Falha minha, desculpe... XP

Compartilhar este post


Link para o post
Compartilhar em outros sites

caraca certim flávio!!!! putz! valew... mas aki sem querer abusar tem como você me dar uma forcinha no novo topico que abri???

me ajuda nessa vai... depois que eu pegar os conceito eu caminho sozinha. =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá bom dia, o meu código também nao funciona.. diz que nao foi inicializado... o que fazer?

Private Sub salvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles salvar.Click

Dim insert = "insert into Cliente (Cli_nome, Cli_endereco, Cli_telefone, Cli_bairro, Cli_cidade, Cli_cpf, Cli_complemento) values ("

Dim campos = "'" & name2.Text & "','" & endereco2.Text & "','" & telefone2.Text & "','" & bairro2.Text & "','" & cidade2.Text & "','" & cpf2.Text & "','" & complemento2.Text & "')"

 

Dim comando = insert & campos

 

 

Dim conexao As SqlConnection

conexao = New SqlConnection("Data Source=xxx;Initial Catalog=Thais;User ID=xxx;Password=xxx;MultipleActiveResultSets=True;")

 

Dim sql As New SqlCommand

sql.CommandText = comando

conexao.Open()

 

Dim linhas = sql.ExecuteNonQuery()

conexao.Close()

 

 

End Sub

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.