Click here to Skip to main content
15,885,024 members
Please Sign up or sign in to vote.
2.50/5 (2 votes)
See more:
C#
private int GenerateAutoId()
   {
       con.Open();
       SqlCommand cmd = new SqlCommand("Select Count(*) from User",con);
       var temp = cmd.ExecuteReader().ToString();
       int i = Convert.ToInt32(temp);
       con.Close();
       i=i+1;
       return i;
   }


Error Message:
[SqlException (0x80131904): Incorrect syntax near the keyword 'User'.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +2555926
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5959200
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +285
   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4169
   System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +58
   System.Data.SqlClient.SqlDataReader.get_MetaData() +89
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) +430
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) +2598
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) +1483
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +64
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +240
   System.Data.SqlClient.SqlCommand.ExecuteReader() +99
   SignUpPage_SignUp.GenerateAutoId() in d:\SEM-4\WT\ProjectStayHealthy\StayHealthy\templates.aucreative.co\Project\SignUpPage\SignUp.aspx.cs:22
   SignUpPage_SignUp.SignUp_Click(Object sender, EventArgs e) in d:\SEM-4\WT\ProjectStayHealthy\StayHealthy\templates.aucreative.co\Project\SignUpPage\SignUp.aspx.cs:31
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9782698
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +204
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1639


What I have tried:

I have tried the above code to count the number of users in my User Table so that I can generate unique id for new user but I am getting an error as incorrect syntax near User.So can anyone help me to resolve this error.
Posted
Updated 9-May-19 7:32am

This is not a good way to generate an unique key for a database record.
You should rely on the database itself and use an auto generated integer primary key instead.
 
Share this answer
 
Comments
[no name] 5-May-19 9:43am    
Now, an auto generated value has also some disadvantages. I would suggest a sequence to be more flexible.
NamrataSanger 5-May-19 9:44am    
If I am not generating unique id then it shows me another error.
cODE:
protected void SignUp_Click(object sender, EventArgs e)
{
string CodeI;
con.Open();
SqlCommand cmd1 = new SqlCommand("Select CodeId from NumberCode where [CountryCode]='" + Code.SelectedItem + "'", con);
using (SqlDataReader dr = cmd1.ExecuteReader())
{
dr.Read();
CodeI = dr[0].ToString();
}
SqlCommand cmd = new SqlCommand("Insert into User values(@FirstName,@LastName,@EmailId,@Password,@MobileNumber,@CodeId,@Address)",con);
cmd.Parameters.AddWithValue("FirstName",TextUserName.Text.ToString());
cmd.Parameters.AddWithValue("EmailId", TextEMailId.Text);
cmd.Parameters.AddWithValue("Password",TextConfirmPassword.Text);
cmd.Parameters.AddWithValue("LastName",TextLastName.Text);
cmd.Parameters.AddWithValue("MobileNumber",TextMobileNumber.Text);
cmd.Parameters.AddWithValue("Address",TextAddress.Text);
cmd.Parameters.AddWithValue("CodeIdd",CodeI);
cmd.ExecuteNonQuery();
con.Close();
if(cmd.ExecuteNonQuery()<=0)
{
Response.Redirect("../Home/Home.aspx");
}
else
{
Response.Redirect("SignUp.aspx");
}
}

Error Message:
[SqlException (0x80131904): Incorrect syntax near the keyword 'User'.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +2555926
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5959200
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +285
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4169
System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +58
System.Data.SqlClient.SqlDataReader.get_MetaData() +89
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) +430
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) +2598
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) +1483
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +64
System.Data.SqlClient.SqlCommand.ExecuteScalar() +271
SignUpPage_SignUp.GenerateAutoId() in d:\SEM-4\WT\ProjectStayHealthy\StayHealthy\templates.aucreative.co\Project\SignUpPage\SignUp.aspx.cs:22
SignUpPage_SignUp.SignUp_Click(Object sender, EventArgs e) in d:\SEM-4\WT\ProjectStayHealthy\StayHealthy\templates.aucreative.co\Project\SignUpPage\SignUp.aspx.cs:31
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9782698
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +204
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
System.Web.UI.Page.ProcessRe
Nirav Prabtani 6-May-19 7:00am    
just enclose that table into square brackets [User]

Insert into [User] values....
User is a reserved word so put it in square brackets so SQL knows you mean a table called User.

SqlCommand cmd = new SqlCommand("Select Count(*) from [User]",con);
 
Share this answer
 
Quote:
C#
var temp = cmd.ExecuteReader().ToString();
int i = Convert.ToInt32(temp);

In addition to needing square brackets around the reserved word "User", as mentioned in Solution 2 and the comments to Solution 1, you'll also get a FormatException from these two lines.

ExecuteReader returns a SqlDataReader. Calling .ToString() on that will return the string:
"System.Data.SqlClient.SqlDataReader"
That string obviously cannot be converted to an integer.

You should be using ExecuteScalar instead.
C#
object temp = cmd.ExecuteScalar();
int i = Convert.ToInt32(temp);
SqlCommand.ExecuteScalar Method (System.Data.SqlClient) | Microsoft Docs[^]
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900