100分求助:SqlDataSource做一个简单的用户登录

zhilongquan2 2010-05-13 09:22:40
由于是和别的系统共享用户账户信息,存储在SQL数据库中。所以想用 SqlDataSource 链接做一个登录验证。

但是要使用 e.AffectedRows 判断 的话必须绑定 Gridview控件。

谁能提供一个简单好用的方案?

SqlDataSource 好像没有 EOF BOF 这样的参数。

我用的是 VB
...全文
488 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhilongquan2 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 koukoujiayi 的回复:]
还有
e.AffectedRows是一个int
所以正确的应该是:
Label1.Text = e.AffectedRows.ToString(); //是c#,VB不知道是这样吗?
[/Quote]

非常感谢 koukoujiayi!搞定了。100分 给你80,剩下的散给大家把!
flyingyinjun 2010-05-14
  • 打赏
  • 举报
回复
lz,可以不用SQLDATASOURCE链接,但可以在CS后台代码创建一个动态的SQLDATASOURCE,用它来实现!!!
koukoujiayi 2010-05-14
  • 打赏
  • 举报
回复
还有
e.AffectedRows是一个int
所以正确的应该是:
Label1.Text = e.AffectedRows.ToString(); //是c#,VB不知道是这样吗?
koukoujiayi 2010-05-14
  • 打赏
  • 举报
回复
where条件还是要的,就是不要绑定
SELECT * FROM [gn_pwd] WHERE (([name] = @name) AND ([pwd] = @pwd))">

设置了SqdataSource1,产生的前台代码大概如下:
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:你的连接字符 %>"
onselected="SqlDataSource1_Selected"
SelectCommand="SELECT * FROM [gn_pwd] WHERE (([name] = @name) AND ([pwd] = @pwd))">
<SelectParameters>
<asp:Parameter Name="name" Type="String" />
<asp:Parameter Name="pwd" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
zhilongquan2 2010-05-14
  • 打赏
  • 举报
回复
这次报错的是

行 13: SqlDataSource1.SelectParameters("name").DefaultValue = TextBox1.Text



行 13: SqlDataSource1.SelectParameters("name").DefaultValue = TextBox1.Text
zhilongquan2 2010-05-14
  • 打赏
  • 举报
回复


[Quote=引用 22 楼 koukoujiayi 的回复:]
引用 14 楼 zhilongquan2 的回复:
.....
SqlDataSource1.[Select](DataSourceSelectArguments.Empty)
....

1.没有方扩号,应该为:
SqlDataSource1.Select(DataSourceSelectArguments.Empty)

2.name和pwd不要绑定TextBox1和TextB……
[/Quote]

还是报错……

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 11: Label1.Text = "错误:请先输入!"
行 12: Else
行 13: SqlDataSource1.SelectParameters("name").DefaultValue = TextBox1.Text
行 14: SqlDataSource1.SelectParameters("pwd").DefaultValue = TextBox2.Text
行 15: SqlDataSource1.Select(DataSourceSelectArguments.Empty)


后台代码:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

If TextBox1.Text = "" Or TextBox2.Text = "" Then
Label1.Text = "错误:请先输入!"
Else
SqlDataSource1.SelectParameters("name").DefaultValue = TextBox1.Text
SqlDataSource1.SelectParameters("pwd").DefaultValue = TextBox2.Text
SqlDataSource1.Select(DataSourceSelectArguments.Empty)
End If
End Sub

Private Sub SqlDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Selected
Label1.Text = e.AffectedRows
End Sub


济南大飞哥 2010-05-14
  • 打赏
  • 举报
回复
mark
koukoujiayi 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zhilongquan2 的回复:]
.....
SqlDataSource1.[Select](DataSourceSelectArguments.Empty)
....
[/Quote]
1.没有方扩号,应该为:
SqlDataSource1.Select(DataSourceSelectArguments.Empty)

2.name和pwd不要绑定TextBox1和TextBox2,通过后台验证后赋值:
If TextBox1.Text = "" Or TextBox2.Text = "" Then
Label1.Text = "错误:请先输入!"
Else
SqlDataSource1.SelectParameters["name"].DefaultValue = TextBox1.Text;
SqlDataSource1.SelectParameters["pwd"].DefaultValue = TextBox2.Text;
SqlDataSource1.[Select](DataSourceSelectArguments.Empty)
End If



低调的感觉 2010-05-14
  • 打赏
  • 举报
回复
学习。。。
zhoulingsmile 2010-05-14
  • 打赏
  • 举报
回复
学习了。。。
V-Far 2010-05-14
  • 打赏
  • 举报
回复
高人.这样写
zhxingway 2010-05-14
  • 打赏
  • 举报
回复


学习了哦,第一次看到用这个方法.
阿非 2010-05-14
  • 打赏
  • 举报
回复
SqlDataSource1.[Select](DataSourceSelectArguments.Empty)

=>

SqlDataSource1.Select(DataSourceSelectArguments.Empty)
zhilongquan2 2010-05-14
  • 打赏
  • 举报
回复

我绑定的图像
zhilongquan2 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 koukoujiayi 的回复:]
无须绑定任何数据控件!!
页面TextBox1,TextBox2,Button1,分别对应"用户名/密码/提交"
SqlDataSource的html代码:

HTML code
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ Connect……
[/Quote]

我转换成VB代码后 SqlDataSource1.[Select](DataSourceSelectArguments.Empty) 这句话报错。

我的代码

 If TextBox1.Text = "" Or TextBox2.Text = "" Then
Label1.Text = "错误:请先输入!"
Else
SqlDataSource1.[Select](DataSourceSelectArguments.Empty)

End If

Private Sub SqlDataSource1_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Selected
Label1.Text = e.AffectedRows

End Sub



我已经在 SqlDataSource1的SelectQuery中绑定好了查询条件。同时发现 e.AffectedRows的结果不管正确与否都是 0。
jshi123 2010-05-14
  • 打赏
  • 举报
回复
不懂,你把写在SqlDataSource中的SelectCommand直接拿出来,用SqlCommand来执行不行吗?
zhilongquan2 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 linkinwhite 的回复:]
使用SqlDataSource就可以在他的Selected事件中获取e.AffectedRows了,和Gridview无关
然后可以吧e.AffectedRows保存在一个变量中或隐藏控件中
[/Quote]

朋友,不行的。要想获取到 e.AffectedRows,必须让SqlDataSource与Gridview绑定,不绑定什么也获取不到。我试过 Gridview .visible属性设置为隐藏都不行的。不绑定什么也获取不到!这个参数就是通过Gridview取值的。

linkinwhite 2010-05-13
  • 打赏
  • 举报
回复
使用SqlDataSource就可以在他的Selected事件中获取e.AffectedRows了,和Gridview无关
然后可以吧e.AffectedRows保存在一个变量中或隐藏控件中
koukoujiayi 2010-05-13
  • 打赏
  • 举报
回复
所要注意的是TextBox1和TextBox2提交时要进行非空验证,
如果有空的话,是不会执行SqlDataSource1的Select方法的,
也就不会触发SqlDataSource1的Selected事件!
加载更多回复(9)

62,071

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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