View Full Version : فرستادن پارامترهای sp
EMANOEL
چهارشنبه 10 مهر 1387, 05:58 صبح
سلام
یه مشکل حادی برای من در مورد استفاده ازstoredprocedureپیش اومده.وقتی میخوام پارامترهارو به کلاس پایه باکد زیربفرستم با مشکل مواجه میشم:
کد:
SqlParameter[] obj = newSqlParameter[4
Object[] obj={ID,Tel,fname,lname
];
dbbase db = newdbbase();
db.Execute("Sp_Customer_insert", obj);
کلاس db:
publicclassdbbase
{
privatestaticstring _connection = "server=localhost;database=first;integrated security=SSPI;";
DataSet ds=newDataSet();
SqlCommand com=newSqlCommand();
SqlDataAdapter da=newSqlDataAdapter();
SqlConnection con=newSqlConnection(_connection);
publicvoid Execute(string storedprocedurename, object[] parameters)
{
da.SelectCommand = com;
da.SelectCommand.Connection = con;
da.SelectCommand.CommandText = storedprocedurename;
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add(parameters);
da.Fill(ds,"Customer");
}
error:
The SqlParameterCollection only accepts non-null SqlParameter type objects, not Object[] objects.
این خط مشکل داره:
da.SelectCommand.Parameters.Add(parameters
خواهشمندم سریع کمکم کنید:عصبانی++:
majid325
چهارشنبه 10 مهر 1387, 06:36 صبح
شما خط زير رو به كلاس اضافه كن و بعد مقدار MyValue رو بهش پاس بده.
da.SelectCommand.Parameters.AddWithValue("@Param", MyValue);
EMANOEL
شنبه 13 مهر 1387, 20:46 عصر
اون کاری که گفتید کردم این مشکل پیش اومد:
No mapping exists from object type System.Object[] to a known managed provider native type.
تو این خط:
da.Fill(ds,"Customer");
majid325
شنبه 13 مهر 1387, 23:15 عصر
obj رو چه جوري مقدار دهي كردي، اينجا كه null هست.
اگه ميخواي يه آرايه پارامتر بفرستي بايد از متد AddRange مربوط به da.SelectCommand.Parameters استفاده كني.
EMANOEL
یک شنبه 14 مهر 1387, 05:13 صبح
objرو با کد
Object[] obj={ID,Tel,fname,lname};
مقدار دهی کردم
از addrangeکه گفتین استفاده کردم اینerror رو داد:
The SqlParameterCollection only accepts non-null SqlParameter type objects, not Int32 objects.
تو این خط:
da.SelectCommand.Parameters.AddRange(parameters);
majid325
یک شنبه 14 مهر 1387, 06:28 صبح
اون قسمت از برنامت رو كه مشكل داره بزار اينجا (همراه با بانك)، كدي كه گزاشتي خوندنش سخته ، براي اينكه نمونه كد رو در پستها قرار بدي بايد در تگ CODE بزاريشون، مشكلت تو فرستادن پارامتر هست.
EMANOEL
دوشنبه 15 مهر 1387, 06:07 صبح
کد رو تغییر دادم این مشکل پیش اومد:
public void Execute(string storedprocedurename,Object[] parameters)
{
da.SelectCommand = com;
SqlParameter[] obj = new SqlParameter[parameters.Length];
da.SelectCommand.Connection = con;
da.SelectCommand.CommandText = storedprocedurename;
da.SelectCommand.CommandType = CommandType.StoredProcedure;
for (int i = 0; i < parameters.Length; i++)
{
obj[i] = new SqlParameter();
obj[i].Value = parameters[i];
}
da.SelectCommand.Parameters.AddRange(@obj);
da.Fill(ds,"Customer");
خطا:
Procedure or Function 'Sp_Customer_insert' expects parameter '@ID', which was not supplied.
در خط:
da.Fill(ds,"Customer"
کد بانک:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER procedure [dbo].[Sp_Customer_insert]
@ID int,
@Tel varchar(50),
@fname nvarchar(50),
@lname nvarchar(50)
As
begin
insert into Customer(ID,Tel,fname,lname) values(@ID,@Tel,@fname,@lname)
end
majid325
سه شنبه 16 مهر 1387, 09:27 صبح
فكر كن اين كوئري شما هست:
string insertQuery = @\"INSERT INTO Person.CityDetails VALUES (@addressID, @name, @longitude, @latitude, @population, @image)\";
اينم command :
SqlCommand insertCmd = new SqlCommand(insertQuery, cn);
حالا پارامتر هاش رو تعريف ميكني:
SqlParameter addressIDParam = new SqlParameter(\"@addressID\", SqlDbType.Int); SqlParameter nameParam = new SqlParameter(\"@name\", SqlDbType.NVarChar, 256); SqlParameter longParam = new SqlParameter(\"@longitude\", SqlDbType.Float); SqlParameter latParam = new SqlParameter(\"@latitude\", SqlDbType.Float); SqlParameter popParam = new SqlParameter(\"@population\", SqlDbType.Int); SqlParameter imgParam = new SqlParameter(\"@image\", SqlDbType.Image);
پارامتر ها رو دونه به دونه مقدار دهي ميكني:
addressIDParam.Value = addressID;
حالا همه رو نسبت ميدي به command:
insertCmd.Parameters.AddRange(new SqlParameter[] { addressIDParam, nameParam, longParam, latParam, popParam, imgParam });
نمونه كدها هم از http://www.simple-talk.com/sql/sql-server-2005/practical-sql-server-2005-clr-assemblies/ برداشتم
majid325
سه شنبه 16 مهر 1387, 09:34 صبح
کد رو تغییر دادم این مشکل پیش اومد:
خطا:
Procedure or Function 'Sp_Customer_insert' expects parameter '@ID', which was not supplied.
در خط:
da.Fill(ds,"Customer"
کد بانک:
اينم 10 كاراكتر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.