C#连接SQl数据库问题

foolfish_yanzi 2009-04-28 10:44:56
在做登录验证连接sql数据库时总是无法实现正常跳转,不知道什么原因

try
{

string strCon = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
//Label3.Text = strCon;
myConn = new SqlConnection(strCon);
myConn.Open();//连接数据库

string strcmd = "SELECT * FROM [student] where UserName='" + strname + "' and UserPwd='" + strpwd + "'";

SqlDataAdapter sda = new SqlDataAdapter(strcmd, myConn);
//Label3.Text = strCon;
sda.Fill(myDataset); //利用adapter对象把数据集塞到dataset中 (--------这里开始有问题了) //Label3.Text = strcmd;

if (myDataset.Tables[0].Rows[0] != null)
{
Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
Session["UserName"] = TextBox1.Text;
Session["UserPwd"] = TextBox2.Text;
Response.Redirect("Default2.aspx?dealstr=登录成功");

}


}
catch (Exception e1)
{
Console.WriteLine(e1.ToString());
//Label3.Text = "连接出错!" + e1.ToString();
}
finally
{
myConn.Close();
}
...全文
240 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
周公 2009-04-28
  • 打赏
  • 举报
回复
sda.Fill(myDataset); //利用adapter对象把数据集塞到dataset中 (--------这里开始有问题了)
myDataset没有实例化吧?
myDataSet=new DataSet();
sda.Fill(myDataset);
CosmoKey 2009-04-28
  • 打赏
  • 举报
回复
c
CosmoKey 2009-04-28
  • 打赏
  • 举报
回复
Response.Redirect("Default2.aspx?dealstr=注册");
出现问题
{由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。}


你试试用下面的代码 替换上面的代码
Response.Write("<script >{location.href='Default2.aspx?dealstr=注册';}</script>");
kwmxw 2009-04-28
  • 打赏
  • 举报
回复
myDataset为定义?
LoveLife_Go 2009-04-28
  • 打赏
  • 举报
回复
你不应该这么判断 if (myDataset.Tables["user"].Rows[0]!=null)
你应该判断,myDataset.Tables["user"].Rows.count>1
foolfish_yanzi 2009-04-28
  • 打赏
  • 举报
回复
嗯,是的啊。调试时候不小心把表明给删掉了,无语……
呃,小菜鸟一个我,不对,菜鸟还不到
foolfish_yanzi 2009-04-28
  • 打赏
  • 举报
回复
现在发现时犯了个低级错误!
sda.Fill(myDataset,"user"); 表名调试时候给删掉了,跟后面不匹配了。

不过又出现了新的问题,验证通过的跳转没有问题,对于没有通过数据库验证的,没有给出响应。
代码如下,还是找不出错误:
protected void Button1_Click(object sender, EventArgs e)
{
string strname = TextBox1.Text;
string strpwd = TextBox2.Text;
DataSet myDataset = null;
SqlConnection myConn = null;

if (strname != "" & strpwd!= "")
{
//region部分:访问数据库,验证用户信息,如果存在该账号和密码,则跳转到defaul2.aspx,若没有,则在Label3提示
#region
try
{

string strCon = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
//Label3.Text = strCon;
myConn = new SqlConnection(strCon);
myConn.Open();//连接数据库

string strcmd = "SELECT * FROM [student] where UserName='" + strname + "' and UserPwd='" + strpwd + "'";

SqlDataAdapter sda = new SqlDataAdapter(strcmd, myConn);
//sda.SelectCommand = new SqlCommand(strcmd, myConn);

myDataset = new DataSet();
sda.Fill(myDataset,"user"); //利用adapter对象把数据集塞到dataset中
myConn.Close();


if (myDataset.Tables["user"].Rows[0]!=null)
{
//Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
//Label3.Text = strcmd;
Session["UserName"] = strname;
Session["UserPwd"] = strpwd;
Response.Redirect("Default2.aspx?dealstr=登录成功");

}
else
{ //这里的代码没有执行
Label3.Text = "您的输入有误,请重新输入";
}


}
catch (Exception e1)
{
Console.WriteLine(e1.ToString());
//Label3.Text = "连接出错!" + e1.ToString();
}
#endregion
}

else
{
Response.Redirect("Default2.aspx?dealstr=注册");

}
}
CosmoKey 2009-04-28
  • 打赏
  • 举报
回复
如果 没有数据出现如下错误:
在位置 0 处没有任何行

如果有数据 运行到
Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
出现如下错误:
未将对象引用设置到对象的实例

首先建议你在
catch (Exception e1)
{
}
中间加入throw new Exception(e1.Message); 抛出错误

其次 如果判断是否存在数据可以这样使用

SqlConnection Conn = new SqlConnection(strConn)
Conn.Open();
SqlCommand Comm = new SqlCommand(strSql, Conn);
SqlDataReader dr = Comm.ExecuteReader();//执行数据库操作,返回所查询的值
Conn.Close();
if (dr.Read())//如果读取的到,就说应存在
{
…………//加入你所希望的代码
}

leiminlovesoft 2009-04-28
  • 打赏
  • 举报
回复
user ??
你并没有给dataset起别名呀? 这个user从哪里来?
sda.Fill(myDataset,"user");
试试这样,不过,如果"user" 不行的话,就不要用这个名称,因为在MSsql里这个表名是不可以用的。。。
z050301402 2009-04-28
  • 打赏
  • 举报
回复
断点啦
foolfish_yanzi 2009-04-28
  • 打赏
  • 举报
回复
犯了个低级错误!
sda.Fill(myDataset,"user"); //利用adapter对象把数据集塞到dataset中 (--------这里开始有问题了) \
表名调试时候给删掉了,跟后面不匹配了
foolfish_yanzi 2009-04-28
  • 打赏
  • 举报
回复
犯了个低级错误!
sda.Fill(myDataset,"user"); //利用adapter对象把数据集塞到dataset中 (--------这里开始有问题了) \
表明调试时候给删掉了,跟后面不匹配了
烈火蜓蜻 2009-04-28
  • 打赏
  • 举报
回复
你确定,myDataset有被赋一个初始的 new DataSet();的对象?
LoveLife_Go 2009-04-28
  • 打赏
  • 举报
回复
你看看你的dataset里有没有数据,走没走if里面的代码
xu54647265 2009-04-28
  • 打赏
  • 举报
回复
LZ为什么肯定是数据库连接问题?
ericzhangbo1982111 2009-04-28
  • 打赏
  • 举报
回复
if (myDataset.Tables["user"].Rows[0]["UserName"] != null)
{
Label3.Text = myDataset.Tables["user"].Rows[0]["UserName"].ToString();
Session["UserName"] = TextBox1.Text;
Session["UserPwd"] = TextBox2.Text;
Response.Redirect("Default2.aspx?dealstr=登录成功");

}

找了个小miss

你看看你填充的 数据是不是null
因为你没有走这个语句
Response.Redirect
foolfish_yanzi 2009-04-28
  • 打赏
  • 举报
回复
谢谢啊,可是,还是不行,点击提交后,还是在原来页面,也没有报错
JackLeiMM 2009-04-28
  • 打赏
  • 举报
回复

SqlDataAdapter sda = new SqlDataAdapter(strcmd, myConn);
ds = new DataSet();
sda.Fill(ds);
myConn.Close();
foolfish_yanzi 2009-04-28
  • 打赏
  • 举报
回复
没有报错,就是页面不跳转
PandaIT 2009-04-28
  • 打赏
  • 举报
回复
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(
queryString, connection);
adapter.Fill(dataset);
加载更多回复(7)

111,126

社区成员

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

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

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