我是C#的新手,而且我正在一个项目中,您从asp.net C#中的sql数据库调用存储过程。在我的表格中,“ ID”使用varchar数据类型。每当我在文本框中键入ID并单击搜索按钮时,都会生成错误
- System.Data.SqlClient.SqlException:将数据类型varchar转换为int时出错。*
我已经一遍又一遍地检查代码,但是看不到错误。请协助。谢谢。
我的密码
string connString2 = "Data Source=EFTSRV4;Initial Catalog=PaySwitch;Integrated Security=True";
SqlConnection con = new SqlConnection(connString2);
con.Open();
SqlCommand cmd = new SqlCommand("GetMemberDetailsByID", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "GetMemberDetailsByID";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
cmd.Parameters.Add("@MBID", SqlDbType.VarChar).Value = (txtSearch.Text.Trim());
cmd.ExecuteNonQuery();
cmd.Connection = con;
//da.Fill(ds, "Members");
//(SqlDbType.Int).Parse(da.RowUpdated[0]["@MBID"]);
// Mobileno = Convert.ToInt32(txmobileno.Text);
//cmd.Parameters.Add("@MBID", SqlDbType.Int).Value = (txtSearch.Text.Trim());
try
{
dg_Data.EmptyDataText = "No Records Found";
dg_Data.DataSource = cmd.ExecuteReader();
dg_Data.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
我的存储过程
USE [PaySwitch]
GO
/****** Object: StoredProcedure [dbo].[GetMemberDetailsByID] Script Date: 03/02/2014 15:19:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetMemberDetailsByID] (
@MBID VARCHAR (20)
)
AS
BEGIN
SELECT MBCompanyName, MBContactAddress1, MBContactCity,MBContactCountry, MBContactPostCode, MBContactPhone,MBContactEmailAdmin,MInstitutions FROM [dbo].[Members]
WHERE MBID=@MBID
END
我的错误
Exception Details: System.Data.SqlClient.SqlException: Error converting data type varchar to int.
Source Error:
Line 38: DataSet ds = new DataSet();
Line 39: cmd.Parameters.Add("@MBID", SqlDbType.VarChar).Value = (txtSearch.Text.Trim());
Line 40: cmd.ExecuteNonQuery();
Line 41: cmd.Connection = con;
Line 42:
从该错误看来,您MBID
表Members
中的列属于类型,int
并且您试图将其与进行比较VARCHAR
。修改您的存储过程以接收类型的参数,int
而不是VARCHAR
像这样:
ALTER PROCEDURE [dbo].[GetMemberDetailsByID] (
@MBID INT (20) --HERE it should be INT
)
对于通过C#发送参数,请使用AddWithValue方法,例如:
cmd.Parameters.AddWithValue("@MBID", int.Parse(txtSearch.Text.Trim()));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句