webservice运行正常,调用出错

enasp 2008-12-29 11:49:49
System.InvalidCastException: SqlParameterCollection 只接受非空的 SqlParameter 类型对象,不接受 String 对象。
在 System.Data.SqlClient.SqlParameterCollection.ValidateType(Object value)
在 System.Data.SqlClient.SqlParameterCollection.Add(Object value)
在 WebService.Insert(String title, String address)
位置 e:\WebSite1\App_Code\WebService.cs:行号 36



另外请问一下如果在远程调用应该怎么调?也就是通过不同的域能操作这个insert ,update 之类的吗?




public class WebService : System.Web.Services.WebService
{

public WebService()
{

}

[WebMethod]
public int Insert(string title, string address)
{
string strconn = System.Configuration.ConfigurationSettings.AppSettings["connstring"];
SqlConnection cnn = new SqlConnection(strconn);
cnn.Open();

SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "insert into test(title,address)values(@title,@address)";
SqlParameter fname = new SqlParameter("@title", title);
SqlParameter lname = new SqlParameter("@address", address);
cmd.Parameters.Add(title); //这是36行
cmd.Parameters.Add(address);
int i = cmd.ExecuteNonQuery();
cnn.Close();
return i;
}
}
...全文
210 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
houlinghouling 2008-12-29
  • 打赏
  • 举报
回复
cmd.Parameters.Add(new SqlParameter("@username",SqlDbType.VarChar,50).Value=user.UserName);
cmd.Parameters.Add(new SqlParameter("@password",SqlDbType.VarChar,50).Value=user.Password);
这两句写混了,一般分开来写:
cmd.SqlParameter.Add("@username",SqlDbType.VarChar,50);
cmd.SqlParameter.Add("@password",SqlDbType.VarChar,50);
cmd.Parameters["@username"].Value=user.UserName;
cmd.Parameters["@password"].Value=user.Password;

另外,还要注意的是:
Userlogin这个存储过程的参数是不是@username,@password
user.UserName以及user.Password是不是为null。
你最好在user类中在定义username和password时,就给一个初始值
class user
{
public string username="";
public string password="";
}
enasp 2008-12-29
  • 打赏
  • 举报
回复
难道是我的数据库问题

id int 主键,自动增加

title varchar(50)

address varchar(50)
mengxj85 2008-12-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 enasp 的回复:]
首先非常感谢

但是我改成你这样,就提示文中不存在sqldbtype,因为我这是WEBservice.也是从网上COPY来的,还请多多帮忙!!!!

C# code
cmd.Parameters.Add("@title", SqlDbType.VarChar, 50);
cmd.Parameters.Add("@address", SqlDbType.VarChar, 50);
cmd.Parameters["@title"].Value = title;
cmd.Parameters["@address"].Value = address;
[/Quote]
那估计是漏了引用命名空间
enasp 2008-12-29
  • 打赏
  • 举报
回复
首先非常感谢

但是我改成你这样,就提示文中不存在sqldbtype,因为我这是WEBservice.也是从网上COPY来的,还请多多帮忙!!!!

cmd.Parameters.Add("@title", SqlDbType.VarChar, 50);
cmd.Parameters.Add("@address", SqlDbType.VarChar, 50);
cmd.Parameters["@title"].Value = title;
cmd.Parameters["@address"].Value = address;

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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