mwoolgar
asked on
problem with sqlString - asp.net c#
Hi
I have an asp.net [c#] page that queries a database which worked fine until I entered a new field called Deactivated.
The error message suggest there is something wrong with the sql string, but for the life of me I can't see why it is wrong.
Any help would be most appreciated.
Many thanks in advance
Regards
Miles
ERROR::
System.Data.SqlClient.SqlE xception: Line 1: Incorrect syntax near 'Deactivated'. at System.Data.SqlClient.SqlC ommand.Exe cuteNonQue ry() at ASP.workingdatagrid_aspx.m yDataGrid_ Update(Obj ect Sender, DataGridCommandEventArgs e) in C:\Inetpub\wwwroot\uap\wor kingdatagr id.aspx:li ne 63
CODE::
<%@ Page Language="c#" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Sql Client" %>
<script runat="server">
// public string ConnString = "server=uap;database=pap;u id=sa;pwd= z00;";
public string ConnString = "Server=(local); user id=sa;password=;initial catalog = UAP;";
void BindData()
{
//-- Using the Try statement, we attempt to connect to our
//-- database, execute a SqlDataAdapter to store our data,
//-- populate a dataset and then bind that dataset
//-- to our DataGrid.
try
{
SqlConnection SqlConn = new SqlConnection(ConnString);
string SqlString = "SELECT uapID, DealershipName, AutoExchangeClientID, Deactivated FROM uapForm";
SqlDataAdapter SqlComm = new SqlDataAdapter(SqlString, SqlConn);
DataSet customerData = new DataSet();
SqlComm.Fill(customerData, "uapForm");
myDataGrid.DataSource = customerData;
myDataGrid.DataBind();
SqlConn.Close();
SqlComm.Dispose();
SqlConn.Dispose();
}
//-- If we are not able to connect, display a friendly error
catch (Exception e)
{
ErrorLabel.Text = "Not able to connect to database. See description below: <P>";
ErrorLabel.Text += e.ToString();
}
}
void myDataGrid_Update (object Sender, DataGridCommandEventArgs e)
{
//-- Take the data from each textbox in our editable item
//-- and assign that text to a string variable
string uapID = Convert.ToString(e.Item.Ce lls[0].Tex t);
string DealershipName = ((TextBox) e.Item.Cells[1].Controls[0 ]).Text;
string AutoExchangeClientID = ((TextBox) e.Item.Cells[2].Controls[0 ]).Text;
string Deactivated = ((TextBox) e.Item.Cells[3].Controls[0 ]).Text;
//-- Again, using the Try statement, attempt to connect to our database
//-- and make an update with the data from our datagrid
SqlConnection SqlConn = new SqlConnection(ConnString);
try
{
SqlConn.Open();
string SqlString = "UPDATE uapForm ";
SqlString += "SET DealershipName = '" + DealershipName.Replace("'" , "''") + "', ";
//error - third character from end - comma was removed
//SqlString += "TradingName = '" + TradingName.Replace("'", "''") + "', ";
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla ce("'", "''") + "' ";
SqlString += "Deactivated = '" + Deactivated.Replace("'", "''") + "' ";
SqlString += " WHERE uapID = '" + uapID + "'";
SqlCommand SqlComm = new SqlCommand(SqlString, SqlConn);
SqlComm.ExecuteNonQuery();
SqlConn.Close();
SqlComm.Dispose();
SqlConn.Dispose();
}
//-- If for some reason we cannot connect, display a friendly error.
catch (Exception exc)
{
ErrorLabel.Text = "Not able to connect to database. <br>Please See description below:<P> <P>";
ErrorLabel.Text += exc.ToString();
}
//-- Remove the edit focus
myDataGrid.EditItemIndex = -1;
//-- Rebind our datagrid
BindData();
}
void myDataGrid_Cancel(object Sender, DataGridCommandEventArgs e)
{
//-- Remove the edit focus
myDataGrid.EditItemIndex = -1;
//-- Rebind our datagrid
BindData();
}
void myDataGrid_Edit(object Sender, DataGridCommandEventArgs e)
{
//-- Set the edit focus to the item that was selected
myDataGrid.EditItemIndex = (int) e.Item.ItemIndex;
//-- Rebind our datagrid
BindData();
}
void Page_Load (object Sender, EventArgs e)
{
//-- If the page is not posting back, bind our datagrid
if (!Page.IsPostBack)
{
BindData();
}
}
</script>
I have an asp.net [c#] page that queries a database which worked fine until I entered a new field called Deactivated.
The error message suggest there is something wrong with the sql string, but for the life of me I can't see why it is wrong.
Any help would be most appreciated.
Many thanks in advance
Regards
Miles
ERROR::
System.Data.SqlClient.SqlE
CODE::
<%@ Page Language="c#" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Sql
<script runat="server">
// public string ConnString = "server=uap;database=pap;u
public string ConnString = "Server=(local); user id=sa;password=;initial catalog = UAP;";
void BindData()
{
//-- Using the Try statement, we attempt to connect to our
//-- database, execute a SqlDataAdapter to store our data,
//-- populate a dataset and then bind that dataset
//-- to our DataGrid.
try
{
SqlConnection SqlConn = new SqlConnection(ConnString);
string SqlString = "SELECT uapID, DealershipName, AutoExchangeClientID, Deactivated FROM uapForm";
SqlDataAdapter SqlComm = new SqlDataAdapter(SqlString, SqlConn);
DataSet customerData = new DataSet();
SqlComm.Fill(customerData,
myDataGrid.DataSource = customerData;
myDataGrid.DataBind();
SqlConn.Close();
SqlComm.Dispose();
SqlConn.Dispose();
}
//-- If we are not able to connect, display a friendly error
catch (Exception e)
{
ErrorLabel.Text = "Not able to connect to database. See description below: <P>";
ErrorLabel.Text += e.ToString();
}
}
void myDataGrid_Update (object Sender, DataGridCommandEventArgs e)
{
//-- Take the data from each textbox in our editable item
//-- and assign that text to a string variable
string uapID = Convert.ToString(e.Item.Ce
string DealershipName = ((TextBox) e.Item.Cells[1].Controls[0
string AutoExchangeClientID = ((TextBox) e.Item.Cells[2].Controls[0
string Deactivated = ((TextBox) e.Item.Cells[3].Controls[0
//-- Again, using the Try statement, attempt to connect to our database
//-- and make an update with the data from our datagrid
SqlConnection SqlConn = new SqlConnection(ConnString);
try
{
SqlConn.Open();
string SqlString = "UPDATE uapForm ";
SqlString += "SET DealershipName = '" + DealershipName.Replace("'"
//error - third character from end - comma was removed
//SqlString += "TradingName = '" + TradingName.Replace("'", "''") + "', ";
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla
SqlString += "Deactivated = '" + Deactivated.Replace("'", "''") + "' ";
SqlString += " WHERE uapID = '" + uapID + "'";
SqlCommand SqlComm = new SqlCommand(SqlString, SqlConn);
SqlComm.ExecuteNonQuery();
SqlConn.Close();
SqlComm.Dispose();
SqlConn.Dispose();
}
//-- If for some reason we cannot connect, display a friendly error.
catch (Exception exc)
{
ErrorLabel.Text = "Not able to connect to database. <br>Please See description below:<P> <P>";
ErrorLabel.Text += exc.ToString();
}
//-- Remove the edit focus
myDataGrid.EditItemIndex = -1;
//-- Rebind our datagrid
BindData();
}
void myDataGrid_Cancel(object Sender, DataGridCommandEventArgs e)
{
//-- Remove the edit focus
myDataGrid.EditItemIndex = -1;
//-- Rebind our datagrid
BindData();
}
void myDataGrid_Edit(object Sender, DataGridCommandEventArgs e)
{
//-- Set the edit focus to the item that was selected
myDataGrid.EditItemIndex = (int) e.Item.ItemIndex;
//-- Rebind our datagrid
BindData();
}
void Page_Load (object Sender, EventArgs e)
{
//-- If the page is not posting back, bind our datagrid
if (!Page.IsPostBack)
{
BindData();
}
}
</script>
my guess is that the error is being thrown in this code:
string SqlString = "UPDATE uapForm ";
SqlString += "SET DealershipName = '" + DealershipName.Replace("'" , "''") + "', ";
//error - third character from end - comma was removed
//SqlString += "TradingName = '" + TradingName.Replace("'", "''") + "', ";
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla ce("'", "''") + "' ";
SqlString += "Deactivated = '" + Deactivated.Replace("'", "''") + "' ";
SqlString += " WHERE uapID = '" + uapID + "'";
and probably because of the presence of a '' in the modified text of the variable Deactivated ( in Deactivated.Replace("'", "''") ). what are the possible values for the variable Deactivated, in this statement?
AW
string SqlString = "UPDATE uapForm ";
SqlString += "SET DealershipName = '" + DealershipName.Replace("'"
//error - third character from end - comma was removed
//SqlString += "TradingName = '" + TradingName.Replace("'", "''") + "', ";
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla
SqlString += "Deactivated = '" + Deactivated.Replace("'", "''") + "' ";
SqlString += " WHERE uapID = '" + uapID + "'";
and probably because of the presence of a '' in the modified text of the variable Deactivated ( in Deactivated.Replace("'", "''") ). what are the possible values for the variable Deactivated, in this statement?
AW
I think Arthur_Wood's on the right track. The error occurred within a call to SqlCommand.ExecuteNonQuery , which is how you call an UPDATE command, not a SELECT command.
If you're using VS.NET, perhaps you could add a breakpoint at the line Arthur_Wood quoted above, and determine the value fo the SqlString variable right after this line executes.
Thought:
Should
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla ce("'", "''") + "' ";
be updated to add a comma (between AutoExchangeClientID and Deactivated in the SQL) like so
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla ce("'", "''") + "', ";
?
If you're using VS.NET, perhaps you could add a breakpoint at the line Arthur_Wood quoted above, and determine the value fo the SqlString variable right after this line executes.
Thought:
Should
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla
be updated to add a comma (between AutoExchangeClientID and Deactivated in the SQL) like so
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla
?
ASKER
Thanks for the reply guys.
Unfortunately adding an extra coma in the AutoExchangeClientID just gave another error:
System.Data.SqlClient.SqlE xception: Incorrect syntax near the keyword 'WHERE'. at System.Data.SqlClient.SqlC ommand.Exe cuteNonQue ry() at ASP.edit_datagrid2_aspx.my DataGrid_U pdate(Obje ct Sender, DataGridCommandEventArgs e) in C:\7418BegASPNETdb\webroot \ch02\edit _datagrid2 .aspx:line 65
As you can see in the code I had already had this problem.
Unfortunately I don't have VS.NET ;-(
Unfortunately adding an extra coma in the AutoExchangeClientID just gave another error:
System.Data.SqlClient.SqlE
As you can see in the code I had already had this problem.
Unfortunately I don't have VS.NET ;-(
Can you post the newly-updated SqlString-building code?
so you are doing this in Notepad, or WebMatrix?
Yes, please post to current state of the String building code as you now have it.
AW
Yes, please post to current state of the String building code as you now have it.
AW
ASKER
Hi
Things have not changed that much. Deactivated is simply a 1 or 0 depending if it is deactivated or not.
The current string is:
<script runat="server">
{
SqlConn.Open();
string SqlString = "UPDATE uapForm ";
SqlString += "SET DealershipName = '" + DealershipName.Replace("'" , "''") + "', ";
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla ce("'", "''") + "' ";
SqlString += "Deactivated = '" + Deactivated.Replace("'", "''") + "', ";
SqlString += " WHERE uapID = '" + uapID + "'";
SqlCommand SqlComm = new SqlCommand(SqlString, SqlConn);
SqlComm.ExecuteNonQuery();
SqlConn.Close();
SqlComm.Dispose();
SqlConn.Dispose();
}
</script>
cheers
Miles
Things have not changed that much. Deactivated is simply a 1 or 0 depending if it is deactivated or not.
The current string is:
<script runat="server">
{
SqlConn.Open();
string SqlString = "UPDATE uapForm ";
SqlString += "SET DealershipName = '" + DealershipName.Replace("'"
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla
SqlString += "Deactivated = '" + Deactivated.Replace("'", "''") + "', ";
SqlString += " WHERE uapID = '" + uapID + "'";
SqlCommand SqlComm = new SqlCommand(SqlString, SqlConn);
SqlComm.ExecuteNonQuery();
SqlConn.Close();
SqlComm.Dispose();
SqlConn.Dispose();
}
</script>
cheers
Miles
ASKER
Hi All
I've solved it myself. The AutoExchangeClientID line was missing a comma near the end whilst the Deactivated line had to have a comma removed.
SqlString += "SET DealershipName = '" + DealershipName.Replace("'" , "''") + "', ";
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla ce("'", "''") + "', ";
SqlString += "Deactivated = '" + Deactivated.Replace("'", "''") + "' ";
cheers
Miles
I've solved it myself. The AutoExchangeClientID line was missing a comma near the end whilst the Deactivated line had to have a comma removed.
SqlString += "SET DealershipName = '" + DealershipName.Replace("'"
SqlString += "AutoExchangeClientID = '" + AutoExchangeClientID.Repla
SqlString += "Deactivated = '" + Deactivated.Replace("'", "''") + "' ";
cheers
Miles
Hmm. Comparing the above code snippets, it sounds like when you added the comma I suggested, you may have put it in the wrong line. :-)
Oh, well. Fixed is fixed, eh?
Oh, well. Fixed is fixed, eh?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
there is special words in your statement
try this
SELECT [uapID], [DealershipName], [AutoExchangeClientID], [Deactivated] FROM uapForm
Regards,
B..M