【发布时间】:2011-02-03 17:30:23
【问题描述】:
我有以下例程(有效),但由于它使用手动输入的字符串,更新起来很麻烦:
Private Sub ListDefaults()
Dim conn As New SqlConnection( _
"server=bas047\AUTODESKVAULT;Database=DWGDetails;Integrated Security=SSPI")
'Dim conn As New SqlConnection( _
'"server=bas047\AUTODESKVAULT;Database=DWGDetails;Integrated Security=SSPI")
Try
'clear columns
If Not Me.DataGridView1.DataSource Is Nothing Then
Me.DataGridView1.Columns.Clear()
Me.DataGridView1.DataSource = Nothing
End If
conn.Open()
Dim cmd As SqlCommand = conn.CreateCommand()
Dim DLcmd As SqlCommand = conn.CreateCommand()
Dim ILcmd As SqlCommand = conn.CreateCommand()
'Dim srctbl As String = String.Empty
If RadioButton1.Checked = True Then 'A3
shtsize = "A3"
cmd.CommandText = "SELECT [AttributeName],[IsDefaultValue],[DefaultValue] FROM " & _
Chr(34) & "DefaultValues(Borders SB-A3_993-5.2(block))" & Chr(34)
srctbl = "DefaultValues(Borders SB-A3_993-5.2(block))"
ElseIf RadioButton2.Checked = True Then 'A2
shtsize = "A2"
cmd.CommandText = "SELECT [AttributeName],[IsDefaultValue],[DefaultValue] FROM " & _
Chr(34) & "DefaultValues(Borders SB-A2_992-5.2(block))" & Chr(34)
srctbl = "DefaultValues(Borders SB-A2_992-5.2(block))"
ElseIf RadioButton3.Checked = True Then 'A1
shtsize = "A1"
cmd.CommandText = "SELECT [AttributeName],[IsDefaultValue],[DefaultValue] FROM " & _
Chr(34) & "DefaultValues(Borders SB-A1_991-5.2(block))" & Chr(34)
srctbl = "DefaultValues(Borders SB-A1_991-5.2(block))"
ElseIf RadioButton4.Checked = True Then 'A0
shtsize = "A0"
cmd.CommandText = "SELECT [AttributeName],[IsDefaultValue],[DefaultValue] FROM " & _
Chr(34) & "DefaultValues(Borders SB-A0_990-5.2(block))" & Chr(34)
srctbl = "DefaultValues(Borders SB-A0_990-5.2(block))"
End If
'Populate datagridview1
da = New SqlDataAdapter(cmd.CommandText, conn.ConnectionString)
ds = New DataSet
da.Fill(ds, srctbl)
DataGridView1.DataSource = ds.Tables(0)
DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells)
'should enable setting of the date and drawn by entries
'Dim X As Integer
'For X = 0 To DataGridView1.Rows.Count
' If UCase(DataGridView1.Rows(X).Cells(0).Value) = "DRAWN BY" Then
' MessageBox.Show("Found Drawn by!")
' End If
'Next
Catch ex As System.Data.SqlClient.SqlException
MessageBox.Show("There was an error in executing the SQL." & vbLf & "Error Message:" & ex.Message, "SQL")
Finally
'cleanup and reset!
conn.Close()
End Try
End Sub
我认为这是 Linq 的理想人选。到目前为止,这就是我所拥有的似乎可行的方法:
Private Sub ListDefaultsMk1()
Try
Using db As New DWGDetailsDataContext
If RadioButton1.Checked = True Then 'A3
shtsize = "A3"
DataGridView1.DataSource =
From c In db.DefaultValues_Borders_SB_A3_993_5_2_block__s()
Select New With {c.AttributeName, c.IsDefaultValue, c.DefaultValue}
ElseIf RadioButton2.Checked = True Then 'A2
shtsize = "A2"
DataGridView1.DataSource =
From c In db.DefaultValues_Borders_SB_A2_992_5_2_block__s()
Select New With {c.AttributeName, c.IsDefaultValue, c.DefaultValue}
ElseIf RadioButton3.Checked = True Then 'A1
shtsize = "A1"
DataGridView1.DataSource =
From c In db.DefaultValues_Borders_SB_A1_991_5_2_block__s()
Select New With {c.AttributeName, c.IsDefaultValue, c.DefaultValue}
ElseIf RadioButton4.Checked = True Then 'A0
shtsize = "A0"
DataGridView1.DataSource =
From c In db.DefaultValues_Borders_SB_A0_990_5_2_block__s()
Select New With {c.AttributeName, c.IsDefaultValue, c.DefaultValue}
End If
End Using
Catch ex As Exception
MessageBox.Show("There was an error in executing the SQL." & vbLf & "Error Message:" & ex.Message, "SQL")
End Try
End Sub
我的程序的下一步是从 datagridview 中获取(编辑的)值(在手写 SQL 代码的情况下,共享数据集“ds”)并填充另一个表,但我不知道如何使用 Linq 执行此操作。
谁能提供帮助?
提前致谢,
亚历克斯。
编辑:这是我根据评论将其简化为的内容
Private Sub ListDefaultsMk1()
Try
Using db As New DWGDetailsDataContext
If RadioButton1.Checked = True Then 'A3
shtsize = "A3"
DataGridView1.DataSource = (From c In db.DefaultValues_Borders_SB_A3_993_5_2_block__s Select c).ToList()
ElseIf RadioButton2.Checked = True Then 'A2
shtsize = "A2"
DataGridView1.DataSource = (From c In db.DefaultValues_Borders_SB_A2_992_5_2_block__s Select c).ToList()
ElseIf RadioButton3.Checked = True Then 'A1
shtsize = "A1"
DataGridView1.DataSource = (From c In db.DefaultValues_Borders_SB_A1_991_5_2_block__s Select c).ToList()
ElseIf RadioButton4.Checked = True Then 'A0
shtsize = "A0"
DataGridView1.DataSource = (From c In db.DefaultValues_Borders_SB_A0_990_5_2_block__s Select c).ToList()
End If
End Using
Catch ex As Exception
MessageBox.Show("There was an error in executing the Linq2SQL Query!" & vbLf & "Error Message:" & ex.Message, "SQL")
End Try
End Sub
【问题讨论】:
标签: sql vb.net linq linq-to-sql