SQL Server :: SqlHelper.ExecuteNonQuery?
Aug 17, 2010what is the use of this...?
View 4 Replieswhat is the use of this...?
View 4 Replieswhat is the exact difference between Sqlhelper.ExecuteReader and Sqlhelper.ExecuteXmlReaderand which on is faster
View 3 Replies[Code]....
[Code]....
i have been having an error which readsIncorrect syntax near 'strStatusUS'.
Line 86: objCmd.CommandText = cmdStrLine 87: objCn.Open()Line 88: intNoOfRecordUpdated = objCmd.ExecuteNonQuery()Line 89: objCn.Close()Line 90:
the sql statement i used are as follow... when i type it out in sql server management, everything works fine
UPDATE tblUser
SET strStatusUS ='Suspended'
WHERE intUserIdUS = 8
however when i type out this code in visual studio. The error message will pop out..
Public Function updateUser(ByVal pintUSerId As Integer) As Integer
Dim objCn As New SqlConnection
Dim objCmd As New SqlCommand
Dim intNoOfRecordUpdated As Integer
[code]...
I have create a class SqlHelper in window console client project, then test it it works fine. In my SqlHelper class I make all methods are public static. Then I created an assembly, add it to my unit testing project. Whne I try to access the public function of SqlHelper class, I got error like "Error 1 'CreateDatabase.SqlHelper' is inaccessible due to its protection level ".
Here is my class:
[Code]....
at this line: SqlHelper.setUpTestDatabase I got above error, Where goes wrong?
string connectionString = (string)
ConfigurationSettings.AppSettings["ConnectionString"];
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand("INSERT_PERSON",connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@Name",SqlDbType.NVarChar,50));
command.Parameters["@Name"].Value = txtName.Text;
command.Parameters.Add(new SqlParameter("@Age",SqlDbType.NVarChar,10));
command.Parameters["@Age"].Value = txtAge.Text;
connection.Open();
command.ExecuteNonQuery();
connection.Close();
Above is my code.
I has more than 100 methods like this, so every time i'm opening the connection and close it, this will take too much of time, what i think is instead of this i would like to create the class for Connection open, that class will check whether the connection is closed or Broken then Open it(like SqlHelper.cs) so without big change on my methods, how to create that class and how to access that class from my methods.
I hired some to write a ecommerce website for me.and the used SqlHelper.GetInstance().ExecuteDataSet stuff i'm not familiar with.
But is real slow .
Screenshot of trace,page takes like +20 sec to return like 20 records of 3 field each!The DB queries are good, use same SP on my own app and it takes les then 1 sec.Did they use the sqlhelper wrong? is sql helper that slow?
It looks that the old SqlHelper class from the Microsoft Enterprise Library has been mostly replaced by the Database class which is included in the new Enterprise Library version 5.
I have a very simple and trivial example:
using Microsoft.ApplicationBlocks.Data;
private void PopulateCheckBoxGroup()
{
const string strConnTxt = "Server=(local);Database=DataBindTests;Integrated Security=True;";
const string strlSql = "select Technology from PreferredTechnology where ParentId = 1";
CheckBoxList1.DataSource = SqlHelper.ExecuteReader(strConnTxt, CommandType.Text, strlSql);
CheckBoxList1.DataTextField = "Technology";
CheckBoxList1.DataBind();
}
Note: You may not need to read the whole thing to know what's wrong... skip down to the part about the 3 scenarios if you'd like. Only read the begin if you'd like some background info on how I've tried implementing this and where the errors occurred.To begin with, I'm trying to retrieve a list of Clients stored in the CRM_Clients table for a given callerId.I retrieve the clients from my Controller with the SelectLiveClientsForCaller method. The message is then passed on to the DAL through the static Instance method in the DataProvider class:
public List<Client> SelectLiveClientsForCaller(int callerID)
{
List<Client> results = new List<Client>();
[code]...
Problem with ExecuteNonquery
View 15 Repliesa) SqlCommand.ExecuteNonQuery is used for update, insert and delete operations.
Besides the fact that by using ExecuteNonQuery instead of ExecuteReader we automatically know there won't be any query results returned, are there some other benefits/reasons why ExecuteNonQuery should be used?
b) Similarly, if we want a database operation to return a single value, we should use ExecuteScalar instead of ExecuteNonquery ,where with the latter result would be returned via SqlParameter. Is there any particular reason why we should prefer ExecuteScalar over ExecuteNonQuery?
I am trying to return output parameter from stored procedure.
Here is my code:
protected void Button1_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["myConn"].ConnectionString))
{
SqlCommand cmd = new SqlCommand();........
I've got a routine that's supposed to be capturing data from an XML to a DataTable (which works fine), and then using that data to insert into MS SQL. I have no problems with the Inserting of records (via a different routine) but am struggling to update existing records - I'm not even getting any errors, and I can verify that the data is being assigned to the parameters.
Here's what I've got.
Shared Sub Sold(ByVal FullPath As String)
Dim SQLSold As String
Dim SC As New SqlConnection(CS)
SQLSold = "Update Properties SET Status = @Status, Price = @Price WHERE UniqueID = @UniqueID"
Dim DT As New DataTable
[Code]....
I have created a stored procedure that reset my tables' identity value. The store procedure works fine when I didrectly run it in my ms sql server 2008. It reset my table Identity value However, when I call it from my function reset, it returns -1, and does not reset my table identitity value. The function to restet my identity value is:
[Code]....
My stored procedure is
[Code]....
To call the the function:
Dim result
As
Integer = util.resetTableIdentity("myTable", "id", 60)
util.print(result)
I got result is -1, and it does ot reset my table identity. Why? How to resove it?
I am observing a rather strange behavior. I have a procedure which selects a field from a matching record and returns it. The procedure works as expected returning proper values, when I execute the procedure from Visual Studio Server Explorer tab. The procedure is
[Code]....
This is being called from the DAL as follows:
[Code]....
The problem is if @ReturnValue is EAE then cmd.Parameter[outputParameterKey].Value is giving the value "E". If @ReturnValue is "Sassyboy" it is giving "S". why this behavior?
I need to write a single web page that checks the status of an SQL job, and allows the user to execute a new job if the job has a specific status.
I have the job status checking code working but have a problem when it comes to the execution of the next job. The problem is because as soon as ExecutNonQuery is run my code goes straight to the next line leaving SQL to do its own thing - therefore my UpdateProgress never shows. How do I get the UpdateProgress control is be aware that my Job is still running??
I also have a method called ReturnJobDetailStatus which I imagine I could use by continually checking it with a combination of the UpdateProgress control and a timer control? If so I cannot visualise how to achieve this?
Here is a snippet of the code:
Page:
[Code]....
Code-behind:
[Code]....
I used this code it’s worked. But I want when Id exist then output any parameter equal 1 else 0. because I have two button Add and Continue. Â
CREATE PROCEDURE InsertName
@Id INT = NULL
@Name VARCHAR(50)= ''
as
BEGIN
IF NOT EXISTS(SELECT Count(Id) FROM ParsonTable WHERE Id = @Id) OR @Id IS NULL
[Code] ....
[Code]....
is used for update, insert and delete operations.Besides the fact
I have stepped through this code to test it and I am puzzled as to why the update isn't going through to the DB. When I run the SQL statement in SQL editor it updates fine. All variables are getting the proper values when I step through.
[Code]....
Im using above to makes sure that record is inserted to the SQL database before executing another function, but for some reason even if the record is NOT inserted other function has been called.(Other function is t update a Flag)
look at my code below and see where it goes wrong??
Part of the .Net Code
=============================================================
Private Sub GetAndInsert()[code]....
I have a feeling it could be that Rolling back is done in both .NET and SP??
I use below code for my button event
int Result = _cmd.ExecuteNonQuery();
if (Result > 0)
{
Session["Login"] = true;
Response.Redirect("~/Managers.aspx?BehCode=" + Server.UrlEncode(TextBox1.Text));
}
But it didn't work it didn't go to managers.aspx page but when I replace code with below code it worked correctly it go to managers.aspx
int count = Convert.ToInt32(_cmd.ExecuteScalar());
if (count > 0)
{
Session["Login"] = true;
Response.Redirect("Managers.aspx?BehCode=" + Server.UrlEncode(Txtbeh.Text));
}
Why this happen whats exact different between two code?
I'm looking for a way of being able to declare and execute a SqlCommand all on one line. At the moment I do something like:
Dim Cmd as New SqlCommand("....", Conn)
Cmd.ExecuteNonQuery
How can I do something like:
(New SqlCommand("....", Conn)).ExecuteNonQuery
I get an error while passing Parameters, This is my code, OracleHelper
public static int ExecuteNonQuery(OracleConnection connection, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
{
OracleCommand cmd = new OracleCommand();
PrepareCommand(cmd, connection, (OracleTransaction)null, commandType, commandText, commandParameters);
return cmd.ExecuteNonQuery();
}
My Code
DataWrapper.ExecuteNonQuery(connection, CommandType.Text, "Insert into sample values(@id,@name)",new OracleParameter("@id",OracleType.Int32,Int32.Parse(TextBox1.Text)),new OracleParameter("@name",TextBox2.Text.ToString()));
while executing i get this error ! ORA-01036: illegal variable name/number
I've a web form named contest, where users are to register for it. When the register is clicked on, details entered by the user will be saved into the database, but before it will check if the user has already participated in the contest (using AJAX). If the user has already participated, the button will be disabled. The problem is there is an error when I click on the register button.
The error:
ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.
Here's the codes I use:
[Code]....
I'm using VB.net 2.0 with a SQL server (2005) backend db. I've got a very odd problem. I'm trying to use a stored procedure with a parameter to delete a record from a table. I've tested the stored procedure by running it directly from visual studio and it works fine, but when running it through my application nothing happens. There's no error and it appears to have worked but the record is not deleted.
I've checked permissions on the backend db and giving the network ASPNet account the db owner role has no effect either.
Here's the code, there are 3 layers - the webform code, then the business logic class, then the dataconnection class.
'firstly the original code that is run from the webform when the user selects to delete the record
Partial Public Class NewPerson
Inherits System.Web.UI.Page
Private newConn As New DBConnection
Private currentNewRequest As New NewRequest(newConn)
Protected Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
Dim requestID As Integer = CInt(Me.lblRecordID.Text)
Me.currentNewRequest.newRequestID = requestID
Me.newConn.openConnection()
Me.currentNewRequest.DeleteRecord()
Me.newConn.closeConnection()
End Sub
End Class
'the business logic class that is called to set the parameters etc. The newRequestID integer is set at 19, I have checked this out.
Public Class NewRequest
Private dBConnection As DBConnection
Public newRequestID As Integer
Public Sub New(ByVal dBConnection As DBConnection)
'check params
If dBConnection Is Nothing Then
Throw New ArgumentNullException("dBConnection")
End If
Me.dBConnection = dBConnection
End Sub
Public Sub DeleteRecord()
'This sub deletes a request
With Me.dBConnection
.AddParameter("@newrequestID", SqlDbType.Int, 0, newRequestID)
.ExecNonQuerySP("sp_DeleteNewRequest")
End With
End Sub
End Class
'then the data connection class
Imports System.Data.SqlClient
Public Class DBConnection
Private _ParamList As SqlParameterCollection
Private _MyComm As New SqlCommand
Private _ConnectionStr As String = ConfigurationManager.ConnectionStrings("Conn").ToString
'shared connection
Dim conn As New SqlConnection(_ConnectionStr)
'the parameter is added
Public Sub AddParameter(ByVal ParamName As String, ByVal paramType As Data.SqlDbType, ByVal Paramlength As Int16, ByVal ParamValue As String)
MyComm.Parameters.Add(ParamName, paramType, Paramlength)
If ParamValue = Nothing Or ParamValue = "00:00:00" Or ParamValue = "" Then
_MyComm.Parameters(ParamName).Value = DBNull.Value
Else
_MyComm.Parameters(ParamName).Value = ParamValue
End If
End Sub
'and this is where the stored procedure is supposed to run, no errors are generated
Public Sub ExecNonQuerySP(ByVal SPName As String)
Dim MyAdapter As New SqlDataAdapter(_MyComm)
_MyComm.CommandType = CommandType.StoredProcedure
_MyComm.CommandText = SPName
_MyComm.Connection = conn
If Not _MyTrans Is Nothing Then
_MyComm.Transaction = _MyTrans
End If
Try
_MyComm.ExecuteNonQuery()
Catch ex As Exception
Dim errorMessage As String = ex.GetType.ToString & " " & ex.Message.ToString
System.Web.HttpContext.Current.Session("DBError") = "True"
System.Web.HttpContext.Current.Session("DBEx") = errorMessage
Throw ex
Finally
End Try
End Sub
Public Sub openConnection()
conn.Open()
End Sub
Public Sub closeConnection()
conn.Close()
End Sub
End Class
The stored procedure looks like this:
ALTER PROCEDURE sp_DeleteNewRequest
/*this sp is used to delete a new account request record*/
@newrequestID int
AS
DELETE FROM NewAccountRequest WHERE
NewRequestID = @newrequestID