我是编程的新手,大部分都是自学的。希望有人能就这些代码给我建议。
基本上,我遇到的问题是我的SQL语句没有执行来从我的数据库中检索数据。它只是将userPermissionsOne分配给SELECT MemberOne FROM aspnet_Users WHERE MemberOne LIKE' _ '。
非常感谢任何帮助。
userName = User.Identity.Name;
userName = userName.ToUpper();
selectedUserName = betDropDownList.SelectedValue;
userPermissionsOne = "SELECT MemberOne FROM aspnet_Users WHERE MemberOne LIKE '___'";
userPermissionsTwo = "SELECT MemberTwo FROM aspnet_Users WHERE MemberTwo LIKE '___'";
userPermissionsThree = "SELECT MemberThree FROM aspnet_Users WHERE MemberThree LIKE '___'";
if (string.Compare(userName, selectedUserName, true) == 0 || User.IsInRole("Administrator"))
{
hinzufugenButton.Enabled = true;
loschenButton.Enabled = true;
bearbeitenButton.Enabled = true;
betDropDownList.Enabled = true;
}
else if (userName == "ENL")
{
if (string.Compare(userPermissionsOne, selectedUserName, true) == 0 ||
string.Compare(userPermissionsTwo, selectedUserName, true) == 0 ||
string.Compare(userPermissionsThree, selectedUserName, true) == 0)
{
hinzufugenButton.Enabled = true;
loschenButton.Enabled = true;
bearbeitenButton.Enabled = true;
}
else
{
hinzufugenButton.Enabled = false;
loschenButton.Enabled = false;
bearbeitenButton.Enabled = false;
betDropDownList.Enabled = false;
}
}
答案 0 :(得分:6)
如何使用.NET执行SQL语句有很多选择。首先阅读以下内容。这些是我在决定如何访问数据库时通常会考虑的前三种技术:
来自Microsoft:
ADO.NET提供了.NET中最直接的数据访问方法 框架。对于允许应用程序的更高级别的抽象 反对概念模型而不是底层存储 模型,请参阅ADO.NET实体框架。
最近,我的数据库访问技术是Dapper。它速度快,重量轻,而且编码方便。
答案 1 :(得分:4)
假设您使用SqlServer作为数据库:
SqlCommand和SqlConnection类在这里对你有用,所以我想看看那些。
此外,存储过程是一种很好的方法,因为它们更安全,并且执行速度比将查询发送到服务器的速度稍快。快速谷歌了解存储过程的好处将帮助您
要注意的一件事是有不同的方法来执行您的查询。 SqlCommand类有很多方法,例如ExecuteNonQuery()只运行不返回数据的sql命令(例如插入或删除),而ExecuteScalar将执行只返回一个值的查询。
还有其他选项,例如创建DataTable,然后使用DataAdapter填充表格。
我将发布我的数据库连接代码的一些示例,对不起它在VB中,但您应该能够轻松地转换为C#。
首先,这是使用数据适配器的连接
Dim dt As New DataTable
' There are plenty of options you can use with the SqlConnection constructor so you can just modify this to suit your needs
Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("Blueprint").ToString())
Dim cmd As New SqlCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "spGetMenuItemsForTickets"
' parameters could be added here by doing
' cmd.parameters.addwithvalue("@ParamName",value)
cmd.Connection = conn
Using da As New SqlDataAdapter(cmd)
conn.Open()
da.Fill(dt)
conn.Close()
End Using
这是使用ExecuteScalar
的示例Dim names As String = String.Empty
Dim ds As New DataTable
Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("Blueprint").ToString())
Dim cmd As New SqlCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "spGetUserNamesForUpdate"
cmd.Parameters.AddWithValue("@TicketID", TicketID)
cmd.Connection = conn
conn.Open()
names = cmd.ExecuteScalar()
conn.Close()
这是ExecuteNonQuery的一个示例它与Scalar完全相同但没有返回值
Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("Blueprint").ToString())
Dim cmd As New SqlCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "spAddFileToTicket"
cmd.Parameters.AddWithValue("@ticketID", TicketID)
cmd.Parameters.AddWithValue("@filename", Filename)
cmd.Parameters.AddWithValue("@filePath", Filepath)
cmd.Parameters.AddWithValue("@comments", Comment)
cmd.Connection = conn
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
同样在您执行LI ' __ '
的SQL中,您可能希望执行LIKE '%__%'
,因为%是通配符,您可以使用其中一个或两个,但只需执行{{1} }与LIKE '__'
或___1
等