MySQL Update problem

  • Thread starter Thread starter news.skynet.be
  • Start date Start date
N

news.skynet.be

Hi;

When I do an update query in my ASP.NET page. I am unable to store values of
type string...
The parameters @ID, @LoginID, etc etc etc are properly filled in.
Eg:
@ID = "1"
@LoginID = "Julia"
@LastName="Roberts"
@FirstName="Julia"
@[email protected]
@Grp=1
@Active=1
@Password="Julia"

When I do the objLCmd.ExecuteNonQuery(); the values stored in the database
are:
ID = 1
LoginID =""
LastName=""
FirstName=""
Email=""
Grp=1
Active=1
Password=""

So I lose all Text-type values ?

I'll paste my code here:
-------------------------------------------START----------------------------
----------------
string updateCmd = "UPDATE users SET " +

"ID = 2, LoginID = @LoginID, LastName = @LastName, " +

"FirstName = @Firstname, Email = @Email, Grp = @Grp, Active = @Active,
Password = @Password " +

"WHERE ID = 2";

OdbcCommand objLCmd = new OdbcCommand(updateCmd,con);

objLCmd.Parameters.Add(new OdbcParameter("@ID",OdbcType.Int));

objLCmd.Parameters.Add(new OdbcParameter("@LoginID",OdbcType.Text));

objLCmd.Parameters.Add(new OdbcParameter("@LastName",OdbcType.Text));

objLCmd.Parameters.Add(new OdbcParameter("@Firstname",OdbcType.Text));

objLCmd.Parameters.Add(new OdbcParameter("@Email",OdbcType.Text));

objLCmd.Parameters.Add(new OdbcParameter("@Grp",OdbcType.Int));

objLCmd.Parameters.Add(new OdbcParameter("@Active",OdbcType.TinyInt));

objLCmd.Parameters.Add(new OdbcParameter("@Password",OdbcType.Text));


string[] cols =
{"@ID","@LoginID","@LastName","@Firstname","@Email","@Grp","@Active","@Passw
ord"};


int numCols = e.Item.Cells.Count;


this.Label1.Text = "";


for (int i=2; i<numCols; i++) //skip first, second and last column

{


string colvalue = ((TextBox)e.Item.Cells.Controls[0]).Text;


this.Label1.Text += i.ToString() + " " + colvalue;

switch (cols[i-1])

{

case "@LoginID":objLCmd.Parameters["@LoginID"].Value = colvalue;break;

case "@LastName":objLCmd.Parameters["@LastName"].Value = colvalue;break;

case "@Firstname":objLCmd.Parameters["@Firstname"].Value = colvalue;break;

case "@Email":objLCmd.Parameters["@Email"].Value = colvalue;break;

case "@Grp":objLCmd.Parameters["@Grp"].Value = colvalue;break;

case "@Active":objLCmd.Parameters["@Active"].Value = colvalue;break;

case "@Password":objLCmd.Parameters["@Password"].Value = colvalue;break;

}

}

objLCmd.Parameters["@ID"].Value =
this.DatagridUsers.DataKeys[(int)(e.Item.ItemIndex)];

try

{

objLCmd.ExecuteNonQuery();

this.DatagridUsers.EditItemIndex = -1;

}

catch(OdbcException error)

{

}


objLCmd.Connection.Close();

this.fillgrid();

-------------------------------------------STOP-----------------------------
 
news.skynet.be said:
Hi;

When I do an update query in my ASP.NET page. I am unable to store values of
type string...
The parameters @ID, @LoginID, etc etc etc are properly filled in.
Eg:
@ID = "1"
@LoginID = "Julia" [snip]
When I do the objLCmd.ExecuteNonQuery(); the values stored in the database
are:
ID = 1
LoginID ="" [snip]
So I lose all Text-type values ?

I'll paste my code here:
-------------------------------------------START-------------------------- --
----------------
string updateCmd = "UPDATE users SET " +

"ID = 2, LoginID = @LoginID, LastName = @LastName, " +

"FirstName = @FirstName, Email = @Email, Grp = @Grp, Active = @Active,
Password = @Password " +

"WHERE ID = 2";

OdbcCommand objLCmd = new OdbcCommand(updateCmd,con);

objLCmd.Parameters.Add(new OdbcParameter("@ID",OdbcType.Int));

objLCmd.Parameters.Add(new OdbcParameter("@LoginID",OdbcType.Text));
[snip]
case "@LoginID":objLCmd.Parameters["@LoginID"].Value = colvalue;break;
[snip]

Anyone an idea what the problem is ?

Try adding a "Size" for string-type parameters (=length of string).
I've always done that for Access and SqlServer (I seem to recall
it was needed) and it works.


Hans Kesting
 
Nope... does not solve the problem :(

THIS DOESNT WORK:
string updateCmd = "UPDATE users SET " +

"ID = 2, LoginID = @LoginID, LastName = @LastName, " +

"FirstName = @Firstname, Email = @Email, Grp = @Grp, Active = @Active,
Password = @Password " +

"WHERE ID = 2";

THIS WORKS:

string updateCmd = "UPDATE users SET " +

"ID = 2, LoginID = "Frank", LastName = "Frank", " +

"FirstName = "Frank" , Email = (e-mail address removed), Grp = 1, Active = 1,
Password = "MyPassword" +

"WHERE ID = 2";



Any Idea ?




Hans Kesting said:
news.skynet.be said:
Hi;

When I do an update query in my ASP.NET page. I am unable to store
values
of
type string...
The parameters @ID, @LoginID, etc etc etc are properly filled in.
Eg:
@ID = "1"
@LoginID = "Julia" [snip]
When I do the objLCmd.ExecuteNonQuery(); the values stored in the database
are:
ID = 1
LoginID ="" [snip]
So I lose all Text-type values ?

I'll paste my code here:
-------------------------------------------START--------------------------
--
----------------
string updateCmd = "UPDATE users SET " +

"ID = 2, LoginID = @LoginID, LastName = @LastName, " +

"FirstName = @FirstName, Email = @Email, Grp = @Grp, Active = @Active,
Password = @Password " +

"WHERE ID = 2";

OdbcCommand objLCmd = new OdbcCommand(updateCmd,con);

objLCmd.Parameters.Add(new OdbcParameter("@ID",OdbcType.Int));

objLCmd.Parameters.Add(new OdbcParameter("@LoginID",OdbcType.Text));
[snip]
case "@LoginID":objLCmd.Parameters["@LoginID"].Value = colvalue;break;
[snip]

Anyone an idea what the problem is ?

Try adding a "Size" for string-type parameters (=length of string).
I've always done that for Access and SqlServer (I seem to recall
it was needed) and it works.


Hans Kesting
 
Back
Top