【问题标题】:check values of column in sql检查sql中列的值
【发布时间】:2014-04-28 12:43:07
【问题描述】:

我正在尝试从数据库中收集值,如果它们是 X 值,则将背景颜色设置为绿色。

基本上,我有一个 Rota 系统,如果用户正在工作,则更改背景颜色。 select * 只会带回 1 行。

Imports System.Data.SqlClient
 Imports System.Data.OleDb

Public Class Form4
Dim Con As SqlConnection
Dim cmd As New OleDbCommand
Dim sqlstring As String
Dim connstring As String
Dim ds As DataSet
Dim da As SqlDataAdapter
Private Sub Form4_Load(sender As Object, e As EventArgs)
    connstring = "Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Assignment.mdf;Integrated Security=True;Connect Timeout=30"
    Con = New SqlConnection(connstring)
    Con.Open()
    Dim strSQL As String = "SELECT * from Users"
    Dim da As New SqlDataAdapter(strSQL, Con)
    Dim ds As New DataSet
    da.Fill(ds, "Users")
    With cboname
        .DataSource = ds.Tables("Users")
        .DisplayMember = "Name"
        .ValueMember = "Id"
        .SelectedIndex = 0
    End With
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Con As SqlConnection
    Dim cmd As New OleDbCommand
    Dim sqlstring As String
    Dim connstring As String
    Dim ds As DataSet
    Dim da As SqlDataAdapter



    connstring = "Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Assignment.mdf;Integrated Security=True;Connect Timeout=30"

    Con = New SqlConnection(connstring)
    Con.Open()


    sqlstring = ("SELECT * FROM Rota WHERE UserId ='" & cboname.SelectedIndex & "' and ID ='" & dtp1.Value & "'")
    da = New SqlDataAdapter(sqlstring, Con)
    ds = New DataSet
    da.Fill(ds, "Rota")



End Sub

结束类

在此之后,我知道我需要获取一些 IF 语句,但我不确定如何构造它们。

【问题讨论】:

  • 什么的背景颜色?你用什么控件来显示数据?
  • 我想让它改变文本框的颜色。希望它看起来像这样:imgur.com/kLhZkN6
  • 你有more than one row分享same ID AND UserId
  • 没有。作为一个组合,它们将永远是独一无二的
  • 就我个人而言,我会使用 DataReader 而不是 DataAdapter 和 DataSet,并且只是在 Datareader(0)(或任何整数)上使用 Select Case 完成了 While DataReader.Read。但理想情况下,您希望指定列而不是使用 SELECT * 以避免混淆。

标签: sql vb.net visual-studio-2012 sql-server-2012-express


【解决方案1】:

要检查DataSet 中的值,首先使用其中的DataTable,然后是DataRow,然后检查其中一个字段值:

 ds.Tables(0).Rows(0)("{field name}");

所以要根据某个值改变颜色:

 If ds.Tables(0).Rows(0)("{field name}") = "Red" Then
     textbox1.BackColor = Color.Red
 End If

其他一些cmets:

  • DataSet 对于获取一个值可能有点重(除非您绑定到控件)。您可以只使用 ADO.NET 对象并使用 ExecuteScalar)
  • 使用参数而不是连接 SQL 语句更安全(防止 SQL 注入和特殊字符错误)
  • 您可以重构代码以将连接字符串放在一个位置,而不是跨方法复制它。

【讨论】:

  • @D Stanley 感谢您迄今为止的帮助。就目前而言,我的程序不喜欢方括号。还有什么想法???
  • 我想通了! `如果 ds.Tables(0).Rows(0).Item(1) = "True"
  • @user3343446 抱歉,我忽略了索引器使用 VB 语法。很高兴你成功了。
猜你喜欢
  • 1970-01-01
  • 2021-07-23
  • 2013-08-10
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多