C#问题菜鸟求助!

hotmousegx 2006-08-03 12:30:15
各位高人,正在学习C#编程,看着参考资料做一个用户管理的Web应用程序。写了一个数据层基类DbObject,在里面定义了2个执行SQL存储过程的方法RunProcedure(返回结果和不返回结果的)。又写了一个数据层的user类,在另一个CS文件里,user类主要是调用存储过程的公共方法。现在运行报错“C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\usermanger\betaone\DbRole.cs(183): 名称“RunProcedure”在类或命名空间“Betaone.Data.User”中不存在。请问这是为什么啊!另外RunProcedure是protected的,我试着将其改为public仍旧是上面的问题!
...全文
213 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hotmousegx 2006-08-03
  • 打赏
  • 举报
回复
楼上的大虾!太感谢了,就是少了public class User:DbObject他!谢谢!
thoughter 2006-08-03
  • 打赏
  • 举报
回复
User类派生于基类DbObject
我好像没看见代码啊,是不是该
public class User:DbObject
terry_12 2006-08-03
  • 打赏
  • 举报
回复
楼主怎么调用的?
hotmousegx 2006-08-03
  • 打赏
  • 举报
回复
User类派生于基类DbObject,楼上说的是引用Betaone.Data吗?我试过了,错误依旧!谢谢大家帮助,还有什么指导吗!好着急啊!谢谢啊!
terry_12 2006-08-03
  • 打赏
  • 举报
回复
using Betaone.Data;
thoughter 2006-08-03
  • 打赏
  • 举报
回复
User是不是需要把DbObject作为基类?
hotmousegx 2006-08-03
  • 打赏
  • 举报
回复
可否说得详细一些呢!谢谢啊!
ilove8 2006-08-03
  • 打赏
  • 举报
回复
命名空间问题
hotmousegx 2006-08-03
  • 打赏
  • 举报
回复
命名空间是一样的,都是Betaone.Data;在同一个工程中(在同一个类库中);RunProcedure前面需要加类名吗?下面是代码!
数据层基类:
namespace Betaone.Data
{
/// <summary>
/// DataBaseClasses 的摘要说明,数据基类,在DataBaseClass.cs中定义。
/// </summary>
public abstract class DbObject
{
protected SqlConnection Connection;
private string connectionString;

public DbObject()
{}

public DbObject(string connString)
{
connectionString=connString;
Connection=new SqlConnection(connectionString);
}


protected string ConnectionString{get{return connectionString;}}

private SqlCommand BuildQueryCommand(string storedProcName,SqlParameter[] parameters)
{
SqlCommand command=new SqlCommand();
command.Connection=this.Connection;
command.CommandText="["+storedProcName.Trim()+"]";
command.CommandType=CommandType.StoredProcedure;

if(parameters!=null)
{
foreach(SqlParameter p in parameters)
{command.Parameters.Add(p);}
}

return command;
}

protected int RunProcedure(string storedProcName,SqlParameter[] parameters,out int rowsAffected)
{
int result;
SqlCommand cmd=BuildQueryCommand(storedProcName,parameters);
cmd.Parameters.Add(
new SqlParameter(
"@return_value",
SqlDbType.Int,
4,
ParameterDirection.ReturnValue,
false,
((System.Byte)(0)),
((System.Byte)(0)),
"",
DataRowVersion.Current,
null
));
Connection.Open();
rowsAffected=cmd.ExecuteNonQuery();
result=(int)(cmd.Parameters["@return_value"].Value);
Connection.Close();

return result;
}

protected SqlDataReader RunProcedure(string storedProcName,SqlParameter[] parameters)
{
SqlDataReader reader;

SqlCommand cmd=BuildQueryCommand(storedProcName,parameters);
Connection.Open();
reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
}
}

数据层用户类:
namespace Betaone.Data
{
/// <summary>
/// 消息类,对应于数据库的dbuser表,用来在各层之间传递数据,在Dbuser.cs中定义
/// </summary>
public class UserDetails
{
public int id;
public string username;
public byte[] password;
public string division;
public byte[] question;
public byte[] answer;
}


/// <summary>
/// 用户数据类,在Dbuser.cs中定义
/// </summary>
public class User
{
/// <summary>
/// 构造函数,调用基类构造函数,使用指定的连接字符串创建数据连接对象
/// </summary>
/// <param name="connString"></param>
public User(string connString):base(connString)
{}

/// <summary>
/// 向数据库表dbuser中添加一条新纪录
/// </summary>
/// <returns>返回新用户的id</returns>
public int Add( String username,byte[] password,string division,byte[] question,byte[]answer)
{
int rowsAffected;
SqlParameter[] parameters=
{
new SqlParameter("@username",SqlDbType.VarChar,50),
new SqlParameter("@password",SqlDbType.VarBinary,50),
new SqlParameter("@division",SqlDbType.VarChar,20),
new SqlParameter("@question",SqlDbType.Binary,20),
new SqlParameter("@answer",SqlDbType.Binary,20),
new SqlParameter("@userid",SqlDbType.Int,4),
};
parameters[0].Value=username;
parameters[1].Value=password;
parameters[2].Value=division;
parameters[3].Value=question;
parameters[4].Value=answer;
parameters[5].Direction=ParameterDirection.Output;

RunProcedure("sp_insertuser",parameters,out rowsAffected);
return (int) parameters[5].Value;
}


/// <summary>
/// 获取指定ID用户的详细信息
/// </summary>
/// <param name="userid"></param>
/// <returns>返回一个UserDatails对象</returns>
public UserDetails GedDetails(int userid)
{
UserDetails details=null;
SqlParameter[] parameters={new SqlParameter("@userid",SqlDbType.Int,4)};
parameters[0].Value=userid;

SqlDataReader reader=RunProcedure("sp_getuserdetails",parameters);
if(reader.Read())
{
details=new UserDetails();
details.id=Convert.ToInt32(reader["id"]);
details.username=Convert.ToString(reader["username"]);
details.password=(byte[])(reader["password"]);
details.division=Convert.ToString(reader["division"]);
details.question=(byte[])(reader["question"]);
details.answer=(byte[])(reader["answer"]);
}
reader.Close();
return details;
}


//省略其他方法.......
/// <summary>
/// 删除指定用户名的用户
/// </summary>
/// <param name="username"></param>
/// <returns></returns>
public bool deleteuserbyname(string username)
{
SqlParameter[] parameters={new SqlParameter("@username",SqlDbType.VarChar,50)};
parameters[0].Value=username;
int rowsAffected;
RunProcedure("sp_deleteuserbyname",parameters,out rowsAffected);
return(rowsAffected>=2);
}


}


}

哪位高人指点一下啊!
thoughter 2006-08-03
  • 打赏
  • 举报
回复
namespace是否相同,是否在同一个工程中,RunProcedure前带类名了吗?
三省Ta叔 2006-08-03
  • 打赏
  • 举报
回复
是你引用的时候没有实例化吧

110,566

社区成员

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

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

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