自己是新手,模仿着别人的代码写了一个数据库操作的类(SqlServerDataBase.cs),放在网站根目录下的app_code文件夹里,网站的根目录下还有另一个文件夹userinfo,里面有Register.aspx和Register.aspx.cs两个文件是用户注册的页面,我想在Register.aspx.cs中引用数据库操作的类(SqlServerDataBase.cs)检查用户名是否已经存在,但在添加引用中没有找到这个类,并且在运行Register.aspx的提交按钮的时候提示“System.NullReferenceException: 未将对象引用设置到对象的实例。”
以下是几个文件的代码:
SqlServerDataBase.cs
-----------------
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
/// <summary>
/// SqlServerDataBase 的摘要说明
/// </summary>
public class SqlServerDataBase
{
private string strError = null;
private int intCount = 0;
public SqlServerDataBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 公开方法DBConn,返回数据库连接
/// </summary>
/// <returns></returns>
public SqlConnection DBconn()
{
string strConn = "server=local;database=GolbalMeetings;uid=sa;password=";
try
{
return new SqlConnection(strConn);
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// 公开属性ErrorMessage,返回错误信息
/// </summary>
public string ErrorMessage
{
get
{
return strError;
}
} /// <summary>
/// 根据查询语句从数据库检索数据
/// </summary>
/// <param name="strSelect">查询语句</param>
/// <param name="SqlConn">数据库连接</param>
/// <returns>有数据则返回DataSet对象,否则返回null</returns>
public DataSet Select(string SelectString, SqlConnection sqlConn)
{
strError = "";
SqlConnection conn;
if (sqlConn == null)
{
conn = DBconn();
}
else
{
conn = sqlConn;
}
try
{
//若数据库连接的当前状态是关闭的,则打开连接
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
SqlCommand selectCommand = new SqlCommand(SelectString, conn);
selectCommand.CommandType = CommandType.Text;
mySqlDataAdapter.SelectCommand = selectCommand;
DataSet myDS = new DataSet();
mySqlDataAdapter.Fill(myDS);
return myDS;
}
catch (Exception e)
{
strError = "数据检索失败:" + e.Message;
return null;
}
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
}
}
-----------------------------Register.aspx.cs
----------------------
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MyRegister
{
public partial class Register : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox Email1;
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
string VNum = CheckCode.Text;
string myEmail = Email.Text.Trim();
if (VNum != Session["VNum"].ToString() || Session["VNum"].ToString() == null)
{
Message.Text = "验证码错误!";
}
else if((new SqlServerDataBase().Select("select * from asUserInfo where UserName = '"+Email.Text.Trim()+"'", null)).Tables[0].Rows.Count == 0)//提示此行有错误
{
Response.Write("<script>alert(\"此用户名不存在!\")</script>");
}
else
Response.Redirect("../default.aspx");
}
}
}
---------------------
高手们帮帮忙,应该难不到大家,希望50分别打水漂,谢谢……
以下是几个文件的代码:
SqlServerDataBase.cs
-----------------
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
/// <summary>
/// SqlServerDataBase 的摘要说明
/// </summary>
public class SqlServerDataBase
{
private string strError = null;
private int intCount = 0;
public SqlServerDataBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 公开方法DBConn,返回数据库连接
/// </summary>
/// <returns></returns>
public SqlConnection DBconn()
{
string strConn = "server=local;database=GolbalMeetings;uid=sa;password=";
try
{
return new SqlConnection(strConn);
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// 公开属性ErrorMessage,返回错误信息
/// </summary>
public string ErrorMessage
{
get
{
return strError;
}
} /// <summary>
/// 根据查询语句从数据库检索数据
/// </summary>
/// <param name="strSelect">查询语句</param>
/// <param name="SqlConn">数据库连接</param>
/// <returns>有数据则返回DataSet对象,否则返回null</returns>
public DataSet Select(string SelectString, SqlConnection sqlConn)
{
strError = "";
SqlConnection conn;
if (sqlConn == null)
{
conn = DBconn();
}
else
{
conn = sqlConn;
}
try
{
//若数据库连接的当前状态是关闭的,则打开连接
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
SqlCommand selectCommand = new SqlCommand(SelectString, conn);
selectCommand.CommandType = CommandType.Text;
mySqlDataAdapter.SelectCommand = selectCommand;
DataSet myDS = new DataSet();
mySqlDataAdapter.Fill(myDS);
return myDS;
}
catch (Exception e)
{
strError = "数据检索失败:" + e.Message;
return null;
}
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
}
}
-----------------------------Register.aspx.cs
----------------------
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace MyRegister
{
public partial class Register : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox Email1;
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
string VNum = CheckCode.Text;
string myEmail = Email.Text.Trim();
if (VNum != Session["VNum"].ToString() || Session["VNum"].ToString() == null)
{
Message.Text = "验证码错误!";
}
else if((new SqlServerDataBase().Select("select * from asUserInfo where UserName = '"+Email.Text.Trim()+"'", null)).Tables[0].Rows.Count == 0)//提示此行有错误
{
Response.Write("<script>alert(\"此用户名不存在!\")</script>");
}
else
Response.Redirect("../default.aspx");
}
}
}
---------------------
高手们帮帮忙,应该难不到大家,希望50分别打水漂,谢谢……
解决方案 »
- CSS问题,一个DIV中嵌套2个DIV,怎么让第二个DIV置顶?
- Membership web.config权限配置问题,总是登录不进去。
- 关于从数据库读取图片
- 这几天我不同服务器都出现“未预编译文件……,因此不能请求该文件。 ”
- <a href='test.aspx?name=document.getElementById("TextBox1.Text").value'>
- 怎样得到扩展名为htm类型文件的链接地址?
- datalist里超连接列的问题。在线结帐!
- 如何屏蔽一个页或框架的 onresize事件
- 虽然分不多 .但我想高手还是愿意帮我指点一下的.问一下.一个程序是2003开发的.一个是2005开发的.咋个整合啊?给点资料
- 请问思归大哥
- 客户端添加DropDownList
- 哪位有ip数据库呢?或者知道webService提供根据ip解释具体地址的?
ssdb.***就这样简单
protected void Button1_Click(object sender, EventArgs e)
{
string VNum = CheckCode.Text;
string myEmail = Email.Text.Trim();
if (VNum != Session["VNum"].ToString() || Session["VNum"].ToString() == null)
{
Message.Text = "验证码错误!";
}
else
{
SqlServerDataBase db = new SqlServerDataBase();
DataSet ds = db.Select("select * from asUserInfo where UserName = '"+Email.Text.Trim()+"'", null);
if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
{
Response.Write("<script>alert(\"此用户名不存在!\")</script>");
}
else
{
Response.Redirect("../default.aspx");
}
}
{}
else
{}像这样的方法最好定义成静态的,类也最好是静态的类,调用起来方便.
我用Snowdust(雪尘) 的代码进行测试,不管我输入的是否存在,都提示用户名不存在,
正在研究,得出结果立即结贴
SqlServerDataBase sqlDB = new SqlServerDataBase();
sqlDB.DBconn();//连接数据库
DataSet ds = new DataSet(); //定义个数据源
ds = sqlDB.Select(传入SQL语句);//调用函数返回结果
//然后针对ds进行操作,ds就是类似于TABLE详细了解下赫赫。
using 项目名称.app_code;
namespace mysqlserver
{
……
}
也在调用页面(Register.aspx.cs)加了
using mysqlserver;
在测试的时候,不过输入的是否存在都提示用户名不存在,我感觉
是不是类写错了------------
还有一个问题,我点“添加引用”还是找不到那个类,不知道怎么回事
应该在“.net”那个标签里吧?
问题是解决了,但我并没有添加引用,只是在调用叶面using 了类的命名空间,请问这两者有区别么?
我再“添加引用里”一直都没有找到那个类名,一直很纳闷马上结贴
换成
string strConn = "Server=(local);Database=xldf_rhvac_net;Uid=worldpeace;pwd=oneworld&onexldf";
-------
希望对后来人有所帮助