我想页面在未登录前显示用户登录,登录后显示用户姓名。(利用id调用数据库数据),我的代码如下:
If (Session("id") = "") Then
Response.Write("<script>alert('请先登录!');location.href='login.aspx';</script>")
Else
Label1.Text = Session("id").ToString()
Dim sqlstr As String = "select name from register where id [email protected]"
myconn = New SqlConnection("server=localhost;database=database;uid=sa;pwd=sa")
Dim cmd As SqlCommand
cmd = New SqlCommand(sqlstr, myconn)
myconn.Open()
cmd.ExecuteNonQuery()
myconn.Close()
Label1.Text = sqlstr
End If
但是运行显示 cmd.ExecuteNonQuery() 用户代码未处理。。必须声明标量变量 "@label1"。
我的思路错了吗?哪里错了呢?要怎么改呢?(如犯的错误严重,请多多包涵)
If (Session("id") = "") Then
Response.Write("<script>alert('请先登录!');location.href='login.aspx';</script>")
Else
Label1.Text = Session("id").ToString()
Dim sqlstr As String = "select name from register where id [email protected]"
myconn = New SqlConnection("server=localhost;database=database;uid=sa;pwd=sa")
Dim cmd As SqlCommand
cmd = New SqlCommand(sqlstr, myconn)
myconn.Open()
cmd.ExecuteNonQuery()
myconn.Close()
Label1.Text = sqlstr
End If
但是运行显示 cmd.ExecuteNonQuery() 用户代码未处理。。必须声明标量变量 "@label1"。
我的思路错了吗?哪里错了呢?要怎么改呢?(如犯的错误严重,请多多包涵)
比如:select name from register where id ='@label1.text'
但是如果我直接登录主页,再进行登录-主页这个过程,
就会提示 Label1.Text = Session("name").ToString() 未将对象引用设置到对象的实例
然后我就想通过id来调用数据库中的登录名可是提示如上错误,这是为什么内。。?
页面不报错,但是直接显示成:欢迎你:select name from register where id ='1'
myconn = New SqlConnection("server=localhost;database=database;uid=sa;pwd=sa")
Dim cmd As SqlCommand
cmd = New SqlCommand(sqlstr, myconn)
cmd.Parameters.AddWithValue("@id", TextBox1.Text);
在 @label1.text中 显示@字符无效,且说我未申明sqlstr
this.label1.Text = name;2、在SqlData类中写: /// 根据ID查询用户姓名
public static int GetNameById(int id)
{
int i = 0;
SqlHelper helper = new SqlHelper();
SqlParameter[] para = new SqlParameter[]{
new SqlParameter("@id",SqlDbType.Int)
};
para[0].Value = id;
i = Convert.ToInt32(helper.IntScalar("GetNameById", para));
return i;
}
///这里需要在数据库中写一个存储过程 GetNameById
Create PROCEDURE [dbo].[GetNameById]
@id int
AS
BEGIN
select UserId from Users where Name=@Name
END
GO
3、在SqlHelper类中写: public object IntScalar(string procName, SqlParameter[] para)
{
object obj = null;
try
{
Open();
SqlCommand cmd = new SqlCommand(procName, myConnection);
cmd.CommandType = CommandType.StoredProcedure;
if (para != null)
{
foreach (SqlParameter sp in para)
{
cmd.Parameters.Add(sp);
}
}
obj = cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw new Exception(ex.Message + "执行int存储过程失败");
}
finally
{
Close();
}
return obj;
}
应该这样写:
///这里需要在数据库中写一个存储过程 GetNameById
Create PROCEDURE [dbo].[GetNameById]
@id int
AS
BEGIN
select name from Users where id=@id
END
GO
我用的是VB代码。。看你上边的解释,我大概懂,但是好像不知道要怎么转换成VB的。
哎。谁知道要怎么做啊