动态添加存储过程中出现错误!!

Msconfig_001 2008-03-11 05:56:24
public string Add_Parameters(SqlCommand cmd, string[] PrmVal, string[] PrmName)
{
//存储过程中添加参数
//参数:sqlCommand对象,参数名,参数值
int i;
SqlParameter Prm;
for (i = 0; i <= _PrmVal.Length - 1; i++)
{
Prm = cmd.Parameters.Add("@" + PrmName(i), SqlDbType.VarChar);
Prm.Direction = ParameterDirection.Input;
if (PrmVal(i) == "" | PrmVal(i) == null)
{
Prm.Value = DBNull.Value;
}
else
{
Prm.Value = PrmVal(i);
}
}
}

PrmName说这个是变量,而不是方法!!!
...全文
193 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Msconfig_001 2008-03-17
  • 打赏
  • 举报
回复
好的.
我的EMAIL:20640780@qq.com
谢谢你拉!~~
Msconfig_001 2008-03-17
  • 打赏
  • 举报
回复
多谢!!!
已经收到!~
gh57897053 2008-03-17
  • 打赏
  • 举报
回复
给你发了
gh57897053 2008-03-15
  • 打赏
  • 举报
回复
如果需要完整代码,我可以发给你做参考
gh57897053 2008-03-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 Msconfig_001 的回复:]
引用 9 楼 gh57897053 的回复:
我一般都是这样做:
public static SqlCommand CreateCmd(string procName, SqlParameter[] prams)
{
SqlConnection Conn = GetConn();
SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Connection = Conn;
Cmd.CommandText = procName;
if (prams != null)
{ …
[/Quote]

有啊,怎么会没数据呢,你传递的SqlParameter[] prams里面就有数据啊

prams[0].Value=..;
就这样做
wolffe2007 2008-03-15
  • 打赏
  • 举报
回复
楼主 这你还没明白啊?
string[] ParaMetersValue 就是类型不匹配啦!
你把所有的类型 都装到string得数组里了 当然不行啦!
除非你能保证都是string行的!
你可以用object数组 或 ArrayList
但记得转换!
Msconfig_001 2008-03-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gh57897053 的回复:]
我一般都是这样做:
public static SqlCommand CreateCmd(string procName, SqlParameter[] prams)
{
SqlConnection Conn = GetConn();
SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Connection = Conn;
Cmd.CommandText = procName;
if (prams != null)
{
foreach(SqlParameter para…
[/Quote]

这一段的话,好象没有把得到的数据放在里面.

我上面也了一段循环,形成动态添加的功能.
Msconfig_001 2008-03-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wolffe2007 的回复:]
楼主 报错的 是这段吗?
else
{
Prm.Value = PrmVal[i];
}

应该是类型错误吧!
把string 换成 object试试吧!
[/Quote]

不是这段.public static string BindDataView(GridView dv, string StoredProcdureName, string[] ParaMetersValue, string[] ParametersName)

的string报错:说不是所有的都是string

Msconfig_001 2008-03-15
  • 打赏
  • 举报
回复
能把代码贴全一点?
gh57897053 2008-03-15
  • 打赏
  • 举报
回复
然后在SqlParameter[] prams={new SqlParameter(),...,new SqlParameter()};
prams[0].Value=...;
prams[1].Value=...;
prams[2].Value=...;
这样会不会更好呢?
wolffe2007 2008-03-15
  • 打赏
  • 举报
回复
9楼是正解啦!
wolffe2007 2008-03-15
  • 打赏
  • 举报
回复
楼主 报错的 是这段吗?
else
{
Prm.Value = PrmVal[i];
}

应该是类型错误吧!
把string 换成 object试试吧!
gh57897053 2008-03-15
  • 打赏
  • 举报
回复
我一般都是这样做:
public static SqlCommand CreateCmd(string procName, SqlParameter[] prams)
{
SqlConnection Conn = GetConn();
SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Connection = Conn;
Cmd.CommandText = procName;
if (prams != null)
{
foreach(SqlParameter parameter in prams)
{
if (parameter != null)
{
Cmd.Parameters.Add(parameter);
}
}
}
return Cmd;
}
Msconfig_001 2008-03-15
  • 打赏
  • 举报
回复
不是吧.广告也别这样做呀!~~
不过还是谢你UP!!!

帮忙搞定问题才是真呀!~~
老兄!
Msconfig_001 2008-03-14
  • 打赏
  • 举报
回复
public class Classdate
{
public static DataSet ds(string StoredProcdureName, string[] PrmName, string[] PrmVal)//string[] PrmName, string[] PrmVal)
{
//获取DataSet...
//参数:存储过程,参数值,参数名
var ConnStr = new ClassConnectionString();
var Con = new SqlConnection(ConnStr.ConnStr);
SqlCommand cmd = new SqlCommand(StoredProcdureName, Con);
cmd.CommandType = CommandType.StoredProcedure;
if ((PrmName != null))
Add_Parameters(cmd, PrmName, PrmVal);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}

public static string Add_Parameters(SqlCommand cmd, string[] PrmVal, string[] PrmName)
{
//存储过程中添加参数
//参数:sqlCommand对象,参数名,参数值
int i;
SqlParameter Prm;
for (i = 0; i <= PrmVal.Length - 1; i++)
{
Prm = cmd.Parameters.Add("@" + PrmName[i], SqlDbType.VarChar);
Prm.Direction = ParameterDirection.Input;
if (PrmVal[i] == "" | PrmVal[i] == null)
{
Prm.Value = DBNull.Value;
}
else
{
Prm.Value = PrmVal[i];
}
}
}
public static string BindDataView(GridView dv, string StoredProcdureName, string[] ParaMetersValue, string[] ParametersName)
{
DataSet DS = new DataSet();
try
{
DS = ds(StoredProcdureName, ParametersName, ParaMetersValue);
dv.DataSource = DS;
dv.DataBind();
}
catch
{

}
finally
{

}
}
}

public static string Add_Parameters(SqlCommand cmd, string[] PrmVal, string[] PrmName)

public static string BindDataView(GridView dv, string StoredProcdureName, string[] ParaMetersValue, string[] ParametersName)

这两段代码出错!!!

说不能用string类型!~~
ff167 2008-03-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Msconfig_001 的回复:]
引用 1 楼 whoami333 的回复:
请用[],不要用()。


还是不行呀!!!

string类型的话,说有些路径返回的值不一定都是string类型的!!!
[/Quote]

我觉得1楼没错啊。你那些是应该用[]的

问题应该不在这段里吧。。。

你把相应的存储过程和调用也贴来看看?
afeny 2008-03-12
  • 打赏
  • 举报
回复
新手 学习中
Msconfig_001 2008-03-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 whoami333 的回复:]
请用[],不要用()。
[/Quote]

还是不行呀!!!

string类型的话,说有些路径返回的值不一定都是string类型的!!!
Msconfig_001 2008-03-11
  • 打赏
  • 举报
回复
在问个问题...
Public ConnStr As String = ConfigurationSettings.AppSettings(CType(System.Web.HttpContext.Current.Handler, Object).GetType().BaseType.Assembly.GetName().Name.ToLower)

这段转成C#怎么转??
whoami333 2008-03-11
  • 打赏
  • 举报
回复
请用[],不要用()。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧