-1

我使用 asp.net 网页,当我想从 sqlserver 2012 的数据库中获取值 - 字段时,它会获取 TABLE 中第一行的 ID_SERVICE 而不是获取 ID_SERVICE 我想要的是我的代码:

SqlConnection conn = new SqlConnection(ConfigurationManager
                            .ConnectionStrings["SeylanehSabzConnectionString"]
                            .ToString());
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Select ID_SERVICE From HR.Service Where ID_PERSONEL=" + 
       DropDownListVisitor.DataValueField;
cmd.Connection = conn;
conn.Open();
serviceid = ((int)cmd.ExecuteScalar());
4

4 回答 4

2

首先最重要的是:使用 sql-parameters而不是连接字符串来构建您的 sql-query:

cmd.CommandText = "Select ID_SERVICE From HR.Service Where ID_PERSONEL=@ID_PERSONEL";
cmd.Parameters.AddWithValue("@ID_PERSONEL", int.Parse(DropDownListVisitor.SelectedValue));

其次,我假设您想使用SelectedValue. DataValueField只是获取/设置要用于DropDownList' 值的列的名称。

于 2013-11-06T08:40:04.200 回答
0

添加

SELECT SCOPE_IDENTITY(); 

在您的查询结束时。

于 2013-11-06T08:38:30.863 回答
0

改用 DataAdapter 来存储从 DB 获取的结果,然后从 DataAdapter 中提取您的需要。

于 2013-11-06T08:41:34.490 回答
0
cmd.CommandText = "Select ID_SERVICE From HR.Service Where ID_PERSONEL=" + 
       DropDownListVisitor.DataValueField;

属性 DataValueField 包含一个字段名称,而不是当前选定的项目或其值。改用 SelectedValue - 当然还可以使用参数来避免 SQL 注入攻击。

于 2013-11-06T08:42:44.213 回答