表users ID int
表Forum userId varchar 字数据库里表示(1,7)尝试过方法:
ALTER PROCEDURE [dbo].[BBS_UserNameById]
@Liang_Id int
ASSELECT * FROM Users WHERE Liang_Id in('+@Liang_Id+')
SELECT * FROM Users WHERE Liang_Id in(@Liang_Id)
ALTER PROCEDURE [dbo].[BBS_UserNameById]
@Liang_Id int
AS
DECLARE @sqlstr nvarchar(200)
set @sqlstr = 'SELECT * FROM Users WHERE Liang_Id 1=1'set @sqlstr = @sqlstr+' AND Liang_Id in ('+@Liang_Id+')'SELECT * FROM Users WHERE CHARINDEX(','+LTRIM(Liang_Id)+',',','+@Liang_Id+',')>0
2天了,也没解决
如果写简单的sqlSELECT * FROM Users WHERE Liang_Id in('+userId+') 即可在存储过程怎么写也不对求DB高手!
表Forum userId varchar 字数据库里表示(1,7)尝试过方法:
ALTER PROCEDURE [dbo].[BBS_UserNameById]
@Liang_Id int
ASSELECT * FROM Users WHERE Liang_Id in('+@Liang_Id+')
SELECT * FROM Users WHERE Liang_Id in(@Liang_Id)
ALTER PROCEDURE [dbo].[BBS_UserNameById]
@Liang_Id int
AS
DECLARE @sqlstr nvarchar(200)
set @sqlstr = 'SELECT * FROM Users WHERE Liang_Id 1=1'set @sqlstr = @sqlstr+' AND Liang_Id in ('+@Liang_Id+')'SELECT * FROM Users WHERE CHARINDEX(','+LTRIM(Liang_Id)+',',','+@Liang_Id+',')>0
2天了,也没解决
如果写简单的sqlSELECT * FROM Users WHERE Liang_Id in('+userId+') 即可在存储过程怎么写也不对求DB高手!
@Liang_Id VARCHAR(200)
AS
EXEC('
SELECT *
FROM Users
WHERE Liang_Id IN ('+@Liang_Id+')
')
GO ALTER PROCEDURE [dbo].[BBS_UserNameById]
@Liang_Id VARCHAR(200)
AS
SELECT *
FROM Users
WHERE CHARINDEX(','+LTRIM(Liang_Id)+',',','+@Liang_Id+',')>0
GO以上两个都可以。
public string GetNameByUserId(string ownerId)
{
string count = ""; SqlParameter[] spt ={
new SqlParameter("@Liang_Id",SqlDbType.Int)
}; spt[0].Value = ownerId.ToString(); using (SqlDataReader reader = DBHelper.ExecuteReader(DBHelper.ConnectionStringLocalTransaction, CommandType.StoredProcedure, "BBS_UserNameById", spt))
{
while (reader.Read())
{
count += reader["Liang_RealName"].ToString() + "| "; }
}
return count;
}db:public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString); try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}直接throw 将参数值从 String 转换到 Int32 失败。如果数据库的 ownerId只存在一个数字如: 1 ,使用上面方法确实可以。但是如果数据库 ownerId是 如:1,7 的就抛错。是代码问题?还是SQL?
{
string count = ""; SqlParameter[] spt ={
new SqlParameter("@Liang_Id",SqlDbType.Int)
}; spt[0].Value = ownerId.ToString();有这么写的????new SqlParameter("@Liang_Id",SqlDbType.Int)这里是INT型,赋值个,1,7能不报错么??
spt[0].Value = ownerId.ToString();[/这里也不能这样吧,这只取到了一个值
也试过。什么都试完了