Jump to content

gravar campos e executar funçoes


Pipo01
 Share

Recommended Posts

boas 🙂

aqui esta o codigo:

string ola = @"data source=..\\..\SQLITE\sss.db";
SQLiteConnection liga = new SQLiteConnection(ola);
string query = "insert into Utilizadores(ano,mes,dia,sexo,altura,peso,duracao,atividade) values (@a,@m,@d,@s,@a,@p,@d,@ati)"; /* os @ e as letras conrrespondem ao que ta nos () dos utilizadores*/
string homem = formulahomem/*. o que intruduzo aqui na parte comentada? formulahomem e a minha funçao e formulamulher tambem*/
string mulher = formulamulher /*???*/
formulahomem formulahomem = new homem(, ,);
double resultado = formulahomem.formulaH();
formulamulher formulamulher = new Mulher(, ,);
double resultado = formulamulher.formulaM();
SQLiteCommand comando = new SQLiteCommand(query, liga);
comando.Parameters.AddWithValue("@a,@m,@d", textBox1.Text);
comando.Parameters.AddWithValue("@s", radioButton1.Text);
comando.Parameters.AddWithValue("@s", radioButton2.Text);
comando.Parameters.AddWithValue("@a", textBox3.Text);
comando.Parameters.AddWithValue("@p", textBox2.Text);
comando.Parameters.AddWithValue("@d", textBox4.Text);
comando.Parameters.AddWithValue("@ati",listBox2.Text);
liga.Open();
comando.ExecuteNonQuery();
liga.Close();
}
}

e aqui a dificuldade/duvida:

eu tou com duvidas de como gravar (ano,mes,dia,sexo,altura,peso,duracao,atividade) e ao msm tempo executar as minhas classes...

obrigado e cumpts 🙂

Link to comment
Share on other sites

Se bem percebi queres passar os resultados de uma classe para dentro de uma query. Se sim, fica um exemplo.

class Peso{
  private double _peso;

  public peso(double peso){
 this._peso = peso;
  }

  public double getPeso(){ return this._peso; }
}

class Altura{
  private double _altura;

  public altura(double altura){
 this._altura = altura;
  }

  public double getAltura(){ return this._altura; }
}

Criadas as classes, é necessário chamá-las e atribuí-lhes valores antes de passar os valores por parâmetro para a query.

Peso _peso = new Peso(65);
Altura _altura = new Altura(1.75);

String query = "INSERT INTO utilizadores (peso, altura) VALUES (@peso, @altura";
SQLiteCommand command = new SQLiteCommand(query, liga);
command.Parameters.Add("@peso", SqlDbType.Double).value = _peso.getPeso();
command.Parameters.Add("@altura", SqlDbType.Double).value = _altura.getAltura();

  1. Não testei o código mas à primeira vista parece-me bem
  2. Talvez não seja SqlDbType.Double mas sim SQLiteDbType.Double, experimenta.
Link to comment
Share on other sites

o codigo que apresentas para "passar os resultados de uma classe para dentro de uma query" nao e este?

class formulahomem
{
private double altura;
private double peso;
private double idade;

public formulahomem(double altura, double peso, double idade)
{
this.altura = altura;
this.peso = peso;
this.idade = idade;

}
public double formulaH()
{
return (66.4730 + (13.7516 * this.altura) + (5.0033 * this.peso) - (6.7550 * this.idade));
}


}


PARA O HOMEM

 class formulamulher
{
private double altura;
private double peso;
private double idade;

public formulamulher(double altura, double peso, double idade)
{
this.altura = altura;
this.peso = peso;
this.idade = idade;

}
public double formulaM()
{
return (655.0955 + (1.8496 * this.altura) + (9.5634 * this.peso) - (4.6756 * this.idade));
}

}


PARA A MULHER

a query e os parametros

 string query = "insert into Utilizadores(ano,mes,dia,sexo,altura,peso,duracao,atividade) values (@a,@m,@d,@s,@a,@p,@d,@ati)";

SQLiteCommand comando = new SQLiteCommand(query, liga);
comando.Parameters.AddWithValue("@a,@m,@d", textBox1.Text);
comando.Parameters.AddWithValue("@s", radioButton1.Text);
comando.Parameters.AddWithValue("@s", radioButton2.Text);
comando.Parameters.AddWithValue("@a", textBox3.Text);
comando.Parameters.AddWithValue("@p", textBox2.Text);
comando.Parameters.AddWithValue("@d", textBox4.Text);
comando.Parameters.AddWithValue("@ati",listBox2.Text);

nao e a mesma coisa ou falta algo? 😕

Edited by Pipo01
Link to comment
Share on other sites

entao vou ter de criar novas classes? com o codigo que me deste como exemplo? :/

o codigo das minhas classes nao serve para por na bd e efectuar os calculos com a formula que la tem?

class Peso{
private double _peso;

public peso(double peso){
this._peso = peso;
}

public double getPeso(){ return this._peso; }
}

class Altura{
private double _altura;

public altura(double altura){
this._altura = altura;
}

public double getAltura(){ return this._altura; }
}

nao pus pq nao sabia o que por nas ()? dai nao ter chamado as classes

pq o codigo que tenho e mal feito e este...

string ola = @"data source=..\\..\SQLITE\sss.db";
SQLiteConnection liga = new SQLiteConnection(ola);
string query = "insert into Utilizadores(ano,mes,dia,sexo,altura,peso,duracao,atividade) values (@a,@m,@d,@s,@a,@p,@d,@ati)"; /* os @ e as letras conrrespondem ao que ta nos () dos utilizadores*/
string homem = formulahomem/*. o que intruduzo aqui na parte comentada? formulahomem e a minha funçao e formulamulher tambem*/
string mulher = formulamulher /*???*/
formulahomem formulahomem = new homem(, ,);
double resultado = formulahomem.formulaH();
formulamulher formulamulher = new Mulher(, ,);
double resultado = formulamulher.formulaM();
SQLiteCommand comando = new SQLiteCommand(query, liga);
comando.Parameters.AddWithValue("@a,@m,@d", textBox1.Text);
comando.Parameters.AddWithValue("@s", radioButton1.Text);
comando.Parameters.AddWithValue("@s", radioButton2.Text);
comando.Parameters.AddWithValue("@a", textBox3.Text);
comando.Parameters.AddWithValue("@p", textBox2.Text);
comando.Parameters.AddWithValue("@d", textBox4.Text);
comando.Parameters.AddWithValue("@ati",listBox2.Text);
liga.Open();
comando.ExecuteNonQuery();
liga.Close();
}
}
Edited by Pipo01
Link to comment
Share on other sites

É assim tão difícil fazer uma comparação olhando para o código exemplo que criei e para o teu?

class Peso{
  private double _peso;

  public peso(double peso){
	 this._peso = peso;
  }

  public double getPeso(){ return this._peso; }
}

class formulahomem
 private double altura;
 private double peso;
 private double idade;

 public formulahomem(double altura, double peso, double idade){
this.altura = altura;
this.peso = peso;
this.idade = idade;
 }

 public double formulaH(){
return (66.4730 + (13.7516 * this.altura) + (5.0033 * this.peso) - (6.7550 * this.idade));
 }
}

Parece-te que o código, comparando com o meu, está correcto? A mim parece-me pelo que o problema não está aqui.

Ok, passo seguinte..

Peso _peso = new Peso(65);
Altura _altura = new Altura(1.75);

formulahomem formulahomem = new homem(, ,);

Consegues chegar lá?

Link to comment
Share on other sites

entao a classe que tu me deste ja nao a preciso? pq vou buscar os valores a este codigo ne?

class formulahomem
private double altura;
private double peso;
private double idade;

public formulahomem(double altura, double peso, double idade){
this.altura = altura;
this.peso = peso;
this.idade = idade;
}

public double formulaH(){
return (66.4730 + (13.7516 * this.altura) + (5.0033 * this.peso) - (6.7550 * this.idade));
}
}

esse "valor_altura, valor_peso, valor_idade" vem da classe que eu tenho em cima ne?

e desculpa se nao tou e entender o que me queres explicar pq isto ja ta um confusao em codigo e classes nunca foram mt o meu forte :/

Link to comment
Share on other sites

Eu estou a tentar que chegues lá por passos mas por ti.

entao a classe que tu me deste ja nao a preciso? pq vou buscar os valores a este codigo ne?

Nunca precisaste dela

Se sim, fica um exemplo.

Eu disse que era um exemplo, de forma a perceberes como funciona, não para implementares igual.

esse "valor_altura, valor_peso, valor_idade" vem da classe que eu tenho em cima ne?

Não vem da classe, vai para a classe.

formulahomem homem = new formulahomem (1.75, 65, 19);

Por fim, para inserires na base de dados usas o exemplo que te coloquei lá em cima.

String query = "INSERT INTO utilizadores (Campo_Qualquer) VALUES (@campoA)";
SQLiteCommand command = new SQLiteCommand(query, liga);
command.Parameters.Add("@campoA", SqlDbType.Double).value = homem.formulaH();
Link to comment
Share on other sites

tipo isto? :/

 {

           formulahomem formulahomem = new formulahomem(1.75,65,20);
           formulamulher formulamulher = new formulamulher(1.80,96,60);
           string ola = @"data source=..\\..\SQLITE\sss.db";
           SQLiteConnection liga = new SQLiteConnection(ola);
           string query = "insert into Utilizadores(ano,mes,dia,sexo,altura,peso,duracao,atividade) values (@ano,@mes,@dia,@sexo,@altura,@peso,@duracao,@atividade)";
           SQLiteCommand comando = new SQLiteCommand(query, liga);
           comando.Parameters.AddWithValue("@ano,@mes,@ddia",SqlDbType).Value = textBox1.Text;
           comando.Parameters.AddWithValue("@sexoM", SqlDbType).Value = radioButton1.Text;
           comando.Parameters.AddWithValue("@sexoF", SqlDbType).Value = radioButton2.Text;   
           comando.Parameters.AddWithValue("@altura", SqlDbType).Value = textBox3.Text;
           comando.Parameters.AddWithValue("@peso", SqlDbType).Value = textBox2.Text;
           comando.Parameters.AddWithValue("@duracao", SqlDbType).Value = textBox4.Text;
           comando.Parameters.AddWithValue("@atividade", SqlDbType).Value =listBox2.Text;
           liga.Open();
           comando.ExecuteNonQuery();
           liga.Close();
       }
}

eu nao tenho acerteza :/ pois acho que isso ta mal pq ele queixa-se do "SqlDbType" porque 'System.Data.SqlDbType' e um tipo mas e usado como uma variavel :/

as textbox1 corresponde a idade,radio ao sexo feminino e masculino, textbox2 ao peso, textbox3 a altura, textbox4 a duraçao da atividade e a list as atividades fisicas e por fim vou imprimir os calculos numa label

este "= _peso.getPeso();" vem de onde? dos parametros do sql?

Edited by Pipo01
Link to comment
Share on other sites

eu tenho e dificuldades e diferente...

mas podes me responder a isto?

eu nao tenho acerteza :/ pois acho que isso ta mal pq ele queixa-se do "SqlDbType" porque 'System.Data.SqlDbType' e um tipo mas e usado como uma variavel :/

este "= _peso.getPeso();" vem de onde? dos parametros do sql?

Link to comment
Share on other sites

class formulahomem
{
private double altura;
private double peso;
private double idade;

public formulahomem(double altura, double peso, double idade)
{
this.altura = altura;
this.peso = peso;
this.idade = idade;

}
public double formulaH()
{
return (66.4730 + (13.7516 * this.altura) + (5.0033 * this.peso) - (6.7550 * this.idade));
}


}

e como dissete mas ele queixa-se e nao nao aceita e o que ta na imagem que pus do codigo

http://www.4shared.com/photo/IN5zn0x7ba/1_online.html

Edited by Pipo01
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.