NO2:自动生成sql语句
2016-02-27 20:01
274 查看
SQL语句自动生成工具
大哉乾元 2016/2/26 作者原创转载请注明出处
前言
这个程序是几年前做成的,现在整理成文档和大家分享,当时参与的项目中大量使用的sql语句,所以SqL语句的代码输入占了较大的比例,为了提高sql语句的书写正确性和输入效率,做成了这个自动生成工具。
一:ADO.NET中执行sql文,对应的sql语句嵌入到vb.net的代码内,分析sql的语法格式个特点:
已检索语句为例分析:
A:必须是已select开头
B:检索的字段名(一些系统函数:可选,例如max,sum等)
C:必须要有From
D:表名,如果有多个表则会有表连接,连接格式:表1 left join(inner join,right join)表2 on 关联字段:表1:xxx =表2.xxx
E:检索条件(可选)where关键字
F:检索条件(可选)条件字段和传入的值或参数进行比较。
二:思路整理
A:想要获取检索字段,首先要获取字段所在的表名。
B:可以调用sql server或oracle提供的存储过程来获取当前连接权限内所有的表名,
C:通过一览选择的方式从一览中选择表名,
D:多表连接:可以使用两个一览来选择对应的两张表,连接方式比较固定常用的只有3中方式可以使用下拉框设选择设定,在使用两个一览分别选择对应表中的字段(通过系统提供的存储过程可以获取指定表中字段的信息),在使用一个输入框输入连个字段的对应关系。多次重复就可以实现多个表的两两关联。
E:将要检索的表保存到对应一览中。
F:检索字段的获取,在上步的一览众可以指定需要检索表的表名,更加表名获取表对应字段一览,将需要的字段选定,追加到指定一览保存,这样就获取到所有需要检索的表字段了。
G:检索条件和上一步的处理类似。
H:这样就得到了from中表的信息,select中字段的信息,where条件的信息,根据这些信息,拼凑成一个sql语句就很简单了。
I:将保存信息按照sql语句的语法结构拼凑成一个sql执行语句并附加上一些必要的信息,将这些保存到一个文件中,通过配置方法字段自动生成sql语句。搞定!!!
三:画面展示
View Code
大哉乾元 2016/2/26 作者原创转载请注明出处
前言
这个程序是几年前做成的,现在整理成文档和大家分享,当时参与的项目中大量使用的sql语句,所以SqL语句的代码输入占了较大的比例,为了提高sql语句的书写正确性和输入效率,做成了这个自动生成工具。
一:ADO.NET中执行sql文,对应的sql语句嵌入到vb.net的代码内,分析sql的语法格式个特点:
已检索语句为例分析:
A:必须是已select开头
B:检索的字段名(一些系统函数:可选,例如max,sum等)
C:必须要有From
D:表名,如果有多个表则会有表连接,连接格式:表1 left join(inner join,right join)表2 on 关联字段:表1:xxx =表2.xxx
E:检索条件(可选)where关键字
F:检索条件(可选)条件字段和传入的值或参数进行比较。
二:思路整理
A:想要获取检索字段,首先要获取字段所在的表名。
B:可以调用sql server或oracle提供的存储过程来获取当前连接权限内所有的表名,
C:通过一览选择的方式从一览中选择表名,
D:多表连接:可以使用两个一览来选择对应的两张表,连接方式比较固定常用的只有3中方式可以使用下拉框设选择设定,在使用两个一览分别选择对应表中的字段(通过系统提供的存储过程可以获取指定表中字段的信息),在使用一个输入框输入连个字段的对应关系。多次重复就可以实现多个表的两两关联。
E:将要检索的表保存到对应一览中。
F:检索字段的获取,在上步的一览众可以指定需要检索表的表名,更加表名获取表对应字段一览,将需要的字段选定,追加到指定一览保存,这样就获取到所有需要检索的表字段了。
G:检索条件和上一步的处理类似。
H:这样就得到了from中表的信息,select中字段的信息,where条件的信息,根据这些信息,拼凑成一个sql语句就很简单了。
I:将保存信息按照sql语句的语法结构拼凑成一个sql执行语句并附加上一些必要的信息,将这些保存到一个文件中,通过配置方法字段自动生成sql语句。搞定!!!
三:画面展示
Imports System.Data.SqlClient Imports System.IO Public Class Form1 '数据库表检索结果 Public dtTable As DataTable = New DataTable 'table表追加数据 Public dtFromTblData As DataTable = New DataTable '检索字段追加数据 Private dtSelColData As DataTable = New DataTable '条件字段追加数据 Private dtWhColData As DataTable = New DataTable Private strConnectstring As String = "" Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load txtDBIp.Text = "192.168.5.14" txtDBName.Text = "TNET_DB" txtDBUser.Text = "sa" txtDBPasswd.Text = "softroad@2013" rdoInsert.Checked = True cmbTabType.Items.Add("INNER JOIN") cmbTabType.Items.Add("LEFT JOIN") cmbTabType.Items.Add("RIGHT JOIN") cmbTabType.Visible = False cmbTabTo.Visible = False cmbTabF1.Visible = False cmbTabF2.Visible = False cmbTabF3.Visible = False cmbTabT1.Visible = False cmbTabT2.Visible = False cmbTabT3.Visible = False 'table from qu dtFromTblData.Columns.Add("d1") dtFromTblData.Columns.Add("d2") dtFromTblData.Columns.Add("d3") dtFromTblData.Columns.Add("d4") dtFromTblData.Columns.Add("d5") dtFromTblData.Columns.Add("d6") dtFromTblData.Columns.Add("d7") grdTabFrom.DataSource = dtFromTblData '检索字段追加数据() dtSelColData.Columns.Add("d1") dtSelColData.Columns.Add("d2") dtSelColData.Columns.Add("d3") dtSelColData.Columns.Add("d4") dtSelColData.Columns.Add("d5") dtSelColData.Columns.Add("d6") grdSelCol.DataSource = dtSelColData selectDataClear() '条件字段追加数据() dtWhColData.Columns.Add("d1") dtWhColData.Columns.Add("d2") dtWhColData.Columns.Add("d3") dtWhColData.Columns.Add("d4") dtWhColData.Columns.Add("d5") dtWhColData.Columns.Add("d6") grdWhCol.DataSource = dtWhColData WhereDataClear() End Sub Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click Me.Close() End Sub Private Sub btnDBTest_Click(sender As Object, e As EventArgs) Handles btnDBTest.Click '输入数据的check If String.IsNullOrEmpty(txtDBIp.Text) = True Then MessageBox.Show("请输入数据库主机ip地址") Exit Sub End If If String.IsNullOrEmpty(txtDBName.Text) = True Then MessageBox.Show("请输入数据库名称") Exit Sub End If If String.IsNullOrEmpty(txtDBUser.Text) = True Then MessageBox.Show("请输入用户名") Exit Sub End If If String.IsNullOrEmpty(txtDBPasswd.Text) = True Then MessageBox.Show("请输入密码") Exit Sub End If strConnectstring = "Password=" & txtDBPasswd.Text & ";Persist Security Info=True;User ID=" & txtDBUser.Text & ";Initial Catalog=" & txtDBName.Text & ";Data Source=" & txtDBIp.Text Dim conn As SqlConnection = Nothing Try conn = New SqlConnection(strConnectstring) conn.Open() If conn.State = ConnectionState.Open Then MessageBox.Show("连接测试正常") End If Catch ex As Exception MessageBox.Show("链接异常:" & ex.Message()) Finally If conn IsNot Nothing Then If conn.State = ConnectionState.Open Then conn.Close() End If End If End Try End Sub '初始化, 取得数据库表结构 Private Sub btnDBGetData_Click(sender As Object, e As EventArgs) Handles btnDBGetData.Click '输入数据的check If String.IsNullOrEmpty(txtDBIp.Text) = True Then MessageBox.Show("请输入数据库主机ip地址") Exit Sub End If If String.IsNullOrEmpty(txtDBName.Text) = True Then MessageBox.Show("请输入数据库名称") Exit Sub End If If String.IsNullOrEmpty(txtDBUser.Text) = True Then MessageBox.Show("请输入用户名") Exit Sub End If If String.IsNullOrEmpty(txtDBPasswd.Text) = True Then MessageBox.Show("请输入密码") Exit Sub End If Dim strsql As String = "select c.name,cast(isnull(f.[value], '') as nvarchar(100)) as remark " _ & "from sys.objects c left join sys.extended_properties f on f.major_id=c.object_id and f.minor_id=0 and f.class=1 " _ & "where c.type='u' or c.type='v' order by name" dtTable = SelsectDb(strsql) setComBoxData() MessageBox.Show("取得数据库表名成功,请在from区域选择需要处理的表") End Sub Private Sub cmbTabFrom_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbTabFrom.SelectedIndexChanged GetTableData(1) End Sub Private Sub cmbTabTo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbTabTo.SelectedIndexChanged GetTableData(2) End Sub '表追加按钮 Private Sub btnAddTable_Click(sender As Object, e As EventArgs) Handles btnAddTable.Click FromTableAdd() End Sub '设置字段 Private Sub btnSelClear_Click(sender As Object, e As EventArgs) Handles btnSelClear.Click selectDataClear() End Sub Private Sub btnSelAdd_Click(sender As Object, e As EventArgs) Handles btnSelAdd.Click selectAddData() End Sub Private Sub cmbSelTabName_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbSelTabName.SelectedIndexChanged selectTabData() End Sub Private Sub cmbSelTabColName_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbSelTabColName.SelectedIndexChanged selectTabColData() End Sub '设置wher条件 Private Sub btnWhClear_Click(sender As Object, e As EventArgs) Handles btnWhClear.Click WhereDataClear() End Sub Private Sub btnWhAdd_Click(sender As Object, e As EventArgs) Handles btnWhAdd.Click WhereAddData() End Sub Private Sub cmbWhTabName_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbWhTabName.SelectedIndexChanged WhereTabData() End Sub Private Sub cmbWhTabColName_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbWhTabColName.SelectedIndexChanged WhereTabColData() End Sub '画面清空 Private Sub btnclear_Click(sender As Object, e As EventArgs) Handles btnclear.Click ClearAll() End Sub Private Sub rdoInsert_CheckedChanged(sender As Object, e As EventArgs) Handles rdoInsert.CheckedChanged ClearAll() End Sub Private Sub rdoDelete_CheckedChanged(sender As Object, e As EventArgs) Handles rdoDelete.CheckedChanged ClearAll() End Sub Private Sub rdoUpdate_CheckedChanged(sender As Object, e As EventArgs) Handles rdoUpdate.CheckedChanged ClearAll() End Sub Private Sub rdoSelect_CheckedChanged(sender As Object, e As EventArgs) Handles rdoSelect.CheckedChanged ClearAll() End Sub 'sql文做成 Private Sub btnZuocheng_Click(sender As Object, e As EventArgs) Handles btnZuocheng.Click sqlSourceSakusei() End Sub '处理函数 #Region "表连接设置" '按照取得的表结构,初始画面显示表名的控件 Private Sub setComBoxData() Dim dTabFrom As DataTable = Nothing Dim dTabTo As DataTable = Nothing dTabFrom = dtTable.Copy dTabTo = dtTable.Copy dTabFrom.Columns.Add("ID") dTabTo.Columns.Add("ID") dTabFrom.Columns.Add("SHOWNAME") dTabTo.Columns.Add("SHOWNAME") For irow = 0 To dtTable.Rows.Count - 1 dTabFrom.Rows(irow)("ID") = irow dTabTo.Rows(irow)("ID") = irow dTabFrom.Rows(irow)("SHOWNAME") = dtTable.Rows(irow)(0) & " " & dtTable.Rows(irow)(1) dTabTo.Rows(irow)("SHOWNAME") = dtTable.Rows(irow)(0) & " " & dtTable.Rows(irow)(1) Next cmbTabFrom.ValueMember = "ID" cmbTabFrom.DisplayMember = "SHOWNAME" cmbTabFrom.DataSource = dTabFrom cmbTabFrom.SelectedIndex = -1 cmbTabTo.ValueMember = "ID" cmbTabTo.DisplayMember = "SHOWNAME" cmbTabTo.DataSource = dTabTo cmbTabTo.SelectedIndex = -1 End Sub Private Sub GetTableData(ByVal mode As Integer) Dim strTable As String Dim dt As DataTable Dim strTableName As String = "" If mode = 1 Then dt = cmbTabFrom.DataSource strTable = cmbTabFrom.SelectedValue If dt Is Nothing Or String.IsNullOrEmpty(strTable) = True Then Exit Sub End If strTableName = dt.Rows(CInt(strTable))("name") ElseIf mode = 2 Then dt = cmbTabTo.DataSource strTable = cmbTabTo.SelectedValue If dt Is Nothing Or String.IsNullOrEmpty(strTable) = True Then Exit Sub End If strTableName = dt.Rows(CInt(strTable))("name") End If Dim strsql As String = "" strsql = strsql & "select a.name, a.max_length as len , a.precision , a.scale , " strsql = strsql & "cast(isnull(e.[value],'') as nvarchar(100)) as remark, f.name as typename," strsql = strsql & " a.column_id -1 as ID, a.name + ' ' + cast(isnull(e.[value],'') as nvarchar(100)) as SHOWNAME " strsql = strsql & " from sys.columns a inner join sys.objects c on a.object_id=c.object_id and ( c.type='u' or c.type='v') " strsql = strsql & " left join sys.extended_properties e on e.major_id=c.object_id " strsql = strsql & " and e.minor_id=a.column_id and e.class=1 " strsql = strsql & " left join sys.types f on f.system_type_id= a.system_type_id " strsql = strsql & " where c.name='" & strTableName & "'" strsql = strsql & " order by ID" Dim dtcol As DataTable dtcol = SelsectDb(strsql) If mode = 1 Then Dim dt1 As DataTable Dim dt2 As DataTable Dim dt3 As DataTable dt1 = dtcol.Copy cmbTabF1.ValueMember = "ID" cmbTabF1.DisplayMember = "SHOWNAME" cmbTabF1.DataSource = dt1 cmbTabF1.SelectedIndex = -1 dt2 = dtcol.Copy cmbTabF2.ValueMember = "ID" cmbTabF2.DisplayMember = "SHOWNAME" cmbTabF2.DataSource = dt2 cmbTabF2.SelectedIndex = -1 dt3 = dtcol.Copy cmbTabF3.ValueMember = "ID" cmbTabF3.DisplayMember = "SHOWNAME" cmbTabF3.DataSource = dt3 cmbTabF3.SelectedIndex = -1 ElseIf mode = 2 Then Dim dt1 As DataTable Dim dt2 As DataTable Dim dt3 As DataTable dt1 = dtcol.Copy cmbTabT1.ValueMember = "ID" cmbTabT1.DisplayMember = "SHOWNAME" cmbTabT1.DataSource = dt1 cmbTabT1.SelectedIndex = -1 dt2 = dtcol.Copy cmbTabT2.ValueMember = "ID" cmbTabT2.DisplayMember = "SHOWNAME" cmbTabT2.DataSource = dt2 cmbTabT2.SelectedIndex = -1 dt3 = dtcol.Copy cmbTabT3.ValueMember = "ID" cmbTabT3.DisplayMember = "SHOWNAME" cmbTabT3.DataSource = dt3 cmbTabT3.SelectedIndex = -1 End If End Sub '追加选择的表和表连接关系 Private Sub FromTableAdd() Dim dt As DataTable = New DataTable() If dtFromTblData.Rows.Count <= 0 Then If cmbTabFrom.SelectedIndex < 0 Then MessageBox.Show("请选择表F项,指定操作的表") Exit Sub Else Dim dr As DataRow = dtFromTblData.NewRow dt = cmbTabFrom.DataSource dr("d1") = "主表" dr("d2") = dt.Rows(CInt(cmbTabFrom.SelectedValue))("name") dr("d4") = dt.Rows(CInt(cmbTabFrom.SelectedValue))("remark") dtFromTblData.Rows.Add(dr) dt.Clear() For i As Integer = 0 To dtFromTblData.Rows.Count - 1 Dim strFromTabName As String strFromTabName = dtFromTblData.Rows(i)("d2") For j As Integer = 0 To dtTable.Rows.Count - 1 Dim strToTabName = dtTable.Rows(j)("Name") If strFromTabName = strToTabName Then Dim dr1 As DataRow = dt.NewRow dr1("name") = strFromTabName dr1("remark") = dtTable.Rows(j)("remark") dr1("ID") = i.ToString() dr1("SHOWNAME") = dtTable.Rows(j)(0) & " " & dtTable.Rows(j)(1) dt.Rows.Add(dr1) End If Next Next cmbTabFrom.SelectedIndex = -1 Dim dtSelTab As DataTable dtSelTab = cmbTabFrom.DataSource.copy() cmbSelTabName.ValueMember = "ID" cmbSelTabName.DisplayMember = "SHOWNAME" cmbSelTabName.DataSource = dtSelTab cmbSelTabName.SelectedIndex = -1 Dim dtWhTab As DataTable dtWhTab = cmbTabFrom.DataSource.copy() cmbWhTabName.ValueMember = "ID" cmbWhTabName.DisplayMember = "SHOWNAME" cmbWhTabName.DataSource = dtWhTab cmbWhTabName.SelectedIndex = -1 If rdoSelect.Checked = True Then cmbTabType.Visible = True cmbTabTo.Visible = True cmbTabF1.Visible = True cmbTabF2.Visible = True cmbTabF3.Visible = True cmbTabT1.Visible = True cmbTabT2.Visible = True cmbTabT3.Visible = True End If End If Else If rdoDelete.Checked = True Or rdoInsert.Checked = True Or rdoUpdate.Checked = True Then MessageBox.Show("插入,删除,更新操作只能选择一个表") Exit Sub Else If cmbTabType.SelectedIndex < 0 Then MessageBox.Show("请选择表连接的类型") Exit Sub End If If cmbTabFrom.SelectedIndex < 0 Then MessageBox.Show("请选择连接的主表") Exit Sub End If If cmbTabTo.SelectedIndex < 0 Then MessageBox.Show("请选择连接的子表") Exit Sub End If If (cmbTabF1.SelectedIndex < 0 And _ cmbTabF2.SelectedIndex < 0 And _ cmbTabF3.SelectedIndex < 0 And _ cmbTabT1.SelectedIndex < 0 And _ cmbTabT2.SelectedIndex < 0 And _ cmbTabT3.SelectedIndex < 0) Then MessageBox.Show("请选择连接的字段对应关系,最多选择3组") Exit Sub End If If (cmbTabF1.SelectedIndex < 0 And _ cmbTabT1.SelectedIndex > 0) Or _ (cmbTabF1.SelectedIndex > 0 And _ cmbTabT1.SelectedIndex < 0) Then MessageBox.Show("请选择正确选择第一组的连接关系") Exit Sub End If If (cmbTabF2.SelectedIndex < 0 And _ cmbTabT2.SelectedIndex > 0) Or _ (cmbTabF2.SelectedIndex > 0 And _ cmbTabT2.SelectedIndex < 0) Then MessageBox.Show("请选择正确选择第二组的连接关系") Exit Sub End If If (cmbTabF3.SelectedIndex < 0 And _ cmbTabT3.SelectedIndex > 0) Or _ (cmbTabF3.SelectedIndex > 0 And _ cmbTabT3.SelectedIndex < 0) Then MessageBox.Show("请选择正确选择第三组的连接关系") Exit Sub End If Dim dr As DataRow = dtFromTblData.NewRow Dim strFromTabName As String Dim strToTabName As String Dim strTemp As String dr("d1") = cmbTabType.Text strFromTabName = cmbTabFrom.DataSource.Rows(CInt(cmbTabFrom.SelectedValue))("name") dr("d2") = strFromTabName strToTabName = cmbTabTo.DataSource.Rows(CInt(cmbTabTo.SelectedValue))("name") dr("d3") = strToTabName dr("d4") = cmbTabTo.DataSource.Rows(CInt(cmbTabTo.SelectedValue))("remark") If cmbTabF1.SelectedIndex >= 0 Then strTemp = strFromTabName & "." & cmbTabF1.DataSource.rows(CInt(cmbTabF1.SelectedIndex))("name") & " = " strTemp = strTemp & strToTabName & "." & cmbTabT1.DataSource.rows(CInt(cmbTabT1.SelectedIndex))("name") dr("d5") = strTemp End If If cmbTabF2.SelectedIndex >= 0 Then strTemp = strFromTabName & "." & cmbTabF2.DataSource.rows(CInt(cmbTabF2.SelectedIndex))("name") & " = " strTemp = strTemp & strToTabName & "." & cmbTabT2.DataSource.rows(CInt(cmbTabT2.SelectedIndex))("name") dr("d6") = strTemp End If If cmbTabF3.SelectedIndex >= 0 Then strTemp = strFromTabName & "." & cmbTabF3.DataSource.rows(CInt(cmbTabF3.SelectedIndex))("name") & " = " strTemp = strTemp & strToTabName & "." & cmbTabT3.DataSource.rows(CInt(cmbTabT3.SelectedIndex))("name") dr("d7") = strTemp End If dtFromTblData.Rows.Add(dr) dt = cmbTabFrom.DataSource dt.Clear() For i As Integer = 0 To dtFromTblData.Rows.Count - 1 Dim strFromTabName1 As String If i = 0 Then strFromTabName1 = dtFromTblData.Rows(i)("d2") Else strFromTabName1 = dtFromTblData.Rows(i)("d3") End If For j As Integer = 0 To dtTable.Rows.Count - 1 Dim strToTabName1 = dtTable.Rows(j)("Name") If strFromTabName1 = strToTabName1 Then Dim dr1 As DataRow = dt.NewRow dr1("name") = strFromTabName1 dr1("remark") = dtTable.Rows(j)("remark") dr1("ID") = i.ToString() dr1("SHOWNAME") = dtTable.Rows(j)(0) & " " & dtTable.Rows(j)(1) dt.Rows.Add(dr1) End If Next Next cmbTabType.SelectedIndex = -1 cmbTabFrom.SelectedIndex = -1 cmbTabTo.SelectedIndex = -1 cmbTabF1.SelectedIndex = -1 cmbTabF2.SelectedIndex = -1 cmbTabF3.SelectedIndex = -1 cmbTabT1.SelectedIndex = -1 cmbTabT2.SelectedIndex = -1 cmbTabT3.SelectedIndex = -1 Dim dtSelTab As DataTable dtSelTab = cmbTabFrom.DataSource.copy() cmbSelTabName.ValueMember = "ID" cmbSelTabName.DisplayMember = "SHOWNAME" cmbSelTabName.DataSource = dtSelTab cmbSelTabName.SelectedIndex = -1 cmbSelTabColName.SelectedIndex = -1 txtSelColType.Text = "" txtSelColLen1.Text = "" txtSelColLen2.Text = "" txtSelColParmant.Text = "" Dim dtWhTab As DataTable dtWhTab = cmbTabFrom.DataSource.copy() cmbWhTabName.ValueMember = "ID" cmbWhTabName.DisplayMember = "SHOWNAME" cmbWhTabName.DataSource = dtWhTab cmbWhTabName.SelectedIndex = -1 txtWhColType.Text = "" txtWhColLen1.Text = "" txtWhColLen2.Text = "" txtWhColParmant.Text = "" End If End If End Sub #End Region #Region "字段设置" '清空 Private Sub selectDataClear() Dim dtsel As DataTable dtsel = grdSelCol.DataSource If dtsel IsNot Nothing Then dtsel.Clear() End If dtsel = cmbSelTabName.DataSource If dtsel IsNot Nothing Then dtsel.Clear() For i As Integer = 0 To dtFromTblData.Rows.Count - 1 Dim strFromTabName1 As String If i = 0 Then strFromTabName1 = dtFromTblData.Rows(i)("d2") Else strFromTabName1 = dtFromTblData.Rows(i)("d3") End If For j As Integer = 0 To dtTable.Rows.Count - 1 Dim strToTabName1 = dtTable.Rows(j)("Name") If strFromTabName1 = strToTabName1 Then Dim dr1 As DataRow = dtsel.NewRow dr1("name") = strFromTabName1 dr1("remark") = dtTable.Rows(j)("remark") dr1("ID") = i.ToString() dr1("SHOWNAME") = dtTable.Rows(j)(0) & " " & dtTable.Rows(j)(1) dtsel.Rows.Add(dr1) End If Next Next End If cmbSelTabName.SelectedIndex = -1 dtsel = cmbSelTabColName.DataSource If dtsel IsNot Nothing Then dtsel.Clear() End If txtSelColType.Text = "" txtSelColLen1.Text = "" txtSelColLen2.Text = "" txtSelColParmant.Text = "" End Sub '选择表 Private Sub selectTabData() Dim strTable As String Dim dt As DataTable Dim strTableName As String = "" dt = cmbSelTabName.DataSource strTable = cmbSelTabName.SelectedValue If dt Is Nothing Or String.IsNullOrEmpty(strTable) = True Then Exit Sub End If strTableName = dt.Rows(CInt(strTable))("name") Dim strsql As String = "" strsql = strsql & "select a.name, a.max_length as len , a.precision , a.scale , " strsql = strsql & "cast(isnull(e.[value],'') as nvarchar(100)) as remark, f.name as typename," strsql = strsql & " a.column_id -1 as ID, a.name + ' ' + cast(isnull(e.[value],'') as nvarchar(100)) as SHOWNAME " strsql = strsql & " from sys.columns a inner join sys.objects c on a.object_id=c.object_id and ( c.type='u' or c.type='v') " strsql = strsql & " left join sys.extended_properties e on e.major_id=c.object_id " strsql = strsql & " and e.minor_id=a.column_id and e.class=1 " strsql = strsql & " left join sys.types f on f.system_type_id= a.system_type_id " strsql = strsql & " where c.name='" & strTableName & "'" strsql = strsql & " order by ID" Dim dtcol As DataTable dtcol = SelsectDb(strsql) Dim dt1 As DataTable dt1 = dtcol.Copy cmbSelTabColName.ValueMember = "ID" cmbSelTabColName.DisplayMember = "SHOWNAME" cmbSelTabColName.DataSource = dt1 cmbSelTabColName.SelectedIndex = -1 txtSelColType.Text = "" txtSelColLen1.Text = "" txtSelColLen2.Text = "" txtSelColParmant.Text = "" End Sub '选择表字段 Private Sub selectTabColData() Dim dtcol As DataTable dtcol = cmbSelTabColName.DataSource If dtcol Is Nothing Then Exit Sub End If Dim iIndex As Integer If cmbSelTabColName.SelectedIndex < 0 Then Exit Sub End If iIndex = CInt(cmbSelTabColName.SelectedIndex) Dim strType As String = dtcol.Rows(iIndex)("typename") txtSelColType.Text = strType strType = strType.ToUpper() If strType = "numeric".ToUpper() Then txtSelColLen1.Text = dtcol.Rows(iIndex)("precision") txtSelColLen2.Text = dtcol.Rows(iIndex)("scale") ElseIf strType = "datetime".ToUpper() Then txtSelColLen1.Text = "" txtSelColLen2.Text = "" Else txtSelColLen1.Text = dtcol.Rows(iIndex)("len") txtSelColLen2.Text = "" End If End Sub '增加检索字段 Private Sub selectAddData() If rdoDelete.Checked = True Then MessageBox.Show("删除数据时,不需要设定字段") Exit Sub End If If cmbSelTabName.SelectedIndex < 0 Then MessageBox.Show("请选择检索处理的表") Exit Sub End If If cmbSelTabColName.SelectedIndex < 0 Then MessageBox.Show("请选择检索处理的字段") Exit Sub End If If (rdoInsert.Checked = True Or rdoUpdate.Checked = True) And chkSelCol.Checked = True Then txtSelColParmant.Text = cmbSelTabColName.DataSource.rows(CInt(cmbSelTabColName.SelectedValue))("name") If txtSelColParmant.Text.Substring(0, 1) <> "@" Then txtSelColParmant.Text = "@" & txtSelColParmant.Text End If End If If (rdoInsert.Checked = True Or rdoUpdate.Checked = True) And chkSelCol.Checked = False Then If txtSelColParmant.Text = "" Then If MsgBox("没有输入字段的参数变量,如果不设置参数,默认使用变量名作为参数 " & vbCrLf & "是否登录该字段", MsgBoxStyle.YesNo, ) = MsgBoxResult.No Then Exit Sub Else txtSelColParmant.Text = cmbSelTabColName.DataSource.rows(CInt(cmbSelTabColName.SelectedValue))("name") End If End If If txtSelColParmant.Text.Substring(0, 1) <> "@" Then txtSelColParmant.Text = "@" & txtSelColParmant.Text End If End If Dim mode As Boolean = False Dim index As Integer Dim strSelTabName As String Dim strSelTabColName As String Dim dtGrid As DataTable dtGrid = grdSelCol.DataSource strSelTabName = cmbSelTabName.DataSource.rows(CInt(cmbSelTabName.SelectedValue))("name") strSelTabColName = cmbSelTabColName.DataSource.rows(CInt(cmbSelTabColName.SelectedValue))("name") For index = 0 To grdSelCol.Rows.Count - 1 If dtGrid.Rows(index)("d1") = strSelTabName And dtGrid.Rows(index)("d2") = strSelTabColName Then mode = True Exit For End If Next If mode = True Then dtGrid.Rows(index)("d3") = cmbSelTabColName.DataSource.rows(CInt(cmbSelTabColName.SelectedValue))("remark") dtGrid.Rows(index)("d4") = txtSelColType.Text dtGrid.Rows(index)("d5") = txtSelColLen1.Text dtGrid.Rows(index)("d6") = txtSelColParmant.Text Else Dim dr As DataRow = dtGrid.NewRow dr("d1") = strSelTabName dr("d2") = strSelTabColName dr("d3") = cmbSelTabColName.DataSource.rows(CInt(cmbSelTabColName.SelectedValue))("remark") dr("d4") = txtSelColType.Text dr("d5") = txtSelColLen1.Text dr("d6") = txtSelColParmant.Text dtGrid.Rows.Add(dr) End If txtSelColParmant.Text = "" End Sub #End Region #Region "where 条件字段设置" '清空 Private Sub WhereDataClear() Dim dtWh As DataTable dtWh = grdWhCol.DataSource If dtWh IsNot Nothing Then dtWh.Clear() End If dtWh = cmbWhTabName.DataSource If dtWh IsNot Nothing Then dtWh.Clear() For i As Integer = 0 To dtFromTblData.Rows.Count - 1 Dim strFromTabName1 As String If i = 0 Then strFromTabName1 = dtFromTblData.Rows(i)("d2") Else strFromTabName1 = dtFromTblData.Rows(i)("d3") End If For j As Integer = 0 To dtTable.Rows.Count - 1 Dim strToTabName1 = dtTable.Rows(j)("Name") If strFromTabName1 = strToTabName1 Then Dim dr1 As DataRow = dtWh.NewRow dr1("name") = strFromTabName1 dr1("remark") = dtTable.Rows(j)("remark") dr1("ID") = i.ToString() dr1("SHOWNAME") = dtTable.Rows(j)(0) & " " & dtTable.Rows(j)(1) dtWh.Rows.Add(dr1) End If Next Next End If cmbWhTabName.SelectedIndex = -1 dtWh = cmbWhTabColName.DataSource If dtWh IsNot Nothing Then dtWh.Clear() End If txtWhColType.Text = "" txtWhColLen1.Text = "" txtWhColLen2.Text = "" txtWhColParmant.Text = "" End Sub '选择表 Private Sub WhereTabData() Dim strTable As String Dim dt As DataTable Dim strTableName As String = "" dt = cmbWhTabName.DataSource strTable = cmbWhTabName.SelectedValue If dt Is Nothing Or String.IsNullOrEmpty(strTable) = True Then Exit Sub End If strTableName = dt.Rows(CInt(strTable))("name") Dim strsql As String = "" strsql = strsql & "select a.name, a.max_length as len , a.precision , a.scale , " strsql = strsql & "cast(isnull(e.[value],'') as nvarchar(100)) as remark, f.name as typename," strsql = strsql & " a.column_id -1 as ID, a.name + ' ' + cast(isnull(e.[value],'') as nvarchar(100)) as SHOWNAME " strsql = strsql & " from sys.columns a inner join sys.objects c on a.object_id=c.object_id and ( c.type='u' or c.type='v') " strsql = strsql & " left join sys.extended_properties e on e.major_id=c.object_id " strsql = strsql & " and e.minor_id=a.column_id and e.class=1 " strsql = strsql & " left join sys.types f on f.system_type_id= a.system_type_id " strsql = strsql & " where c.name='" & strTableName & "'" strsql = strsql & " order by ID" Dim dtcol As DataTable dtcol = SelsectDb(strsql) Dim dt1 As DataTable dt1 = dtcol.Copy cmbWhTabColName.ValueMember = "ID" cmbWhTabColName.DisplayMember = "SHOWNAME" cmbWhTabColName.DataSource = dt1 cmbWhTabColName.SelectedIndex = -1 txtWhColType.Text = "" txtWhColLen1.Text = "" txtWhColLen2.Text = "" txtWhColParmant.Text = "" End Sub '选择表字段 Private Sub WhereTabColData() Dim dtcol As DataTable dtcol = cmbWhTabColName.DataSource If dtcol Is Nothing Then Exit Sub End If Dim iIndex As Integer If cmbWhTabColName.SelectedIndex < 0 Then Exit Sub End If iIndex = CInt(cmbWhTabColName.SelectedValue) Dim strType As String = dtcol.Rows(iIndex)("typename") txtWhColType.Text = strType strType = strType.ToUpper() If strType = "numeric".ToUpper() Then txtWhColLen1.Text = dtcol.Rows(iIndex)("precision") txtWhColLen2.Text = dtcol.Rows(iIndex)("scale") ElseIf strType = "datetime".ToUpper() Then txtWhColLen1.Text = "" txtWhColLen2.Text = "" Else txtWhColLen1.Text = dtcol.Rows(iIndex)("len") txtWhColLen2.Text = "" End If End Sub '增加检索字段 Private Sub WhereAddData() If rdoInsert.Checked = True Then MessageBox.Show("登录数据时,不需要条件字段") Exit Sub End If If cmbWhTabName.SelectedIndex < 0 Then MessageBox.Show("请选择条件处理的表") Exit Sub End If If cmbWhTabColName.SelectedIndex < 0 Then MessageBox.Show("请选择条件处理的字段") Exit Sub End If If txtWhColParmant.Text = "" And chkWhCol.Checked = True Then txtWhColParmant.Text = cmbWhTabColName.DataSource.rows(CInt(cmbWhTabColName.SelectedValue))("name") End If If txtWhColParmant.Text = "" And chkWhCol.Checked = False Then If MsgBox("没有输入字段的参数变量,如果不设置参数,默认使用变量名作为参数 " & vbCrLf & "是否登录该字段", MsgBoxStyle.YesNo, ) = MsgBoxResult.No Then Exit Sub Else txtWhColParmant.Text = cmbWhTabColName.DataSource.rows(CInt(cmbWhTabColName.SelectedValue))("name") End If End If If txtWhColParmant.Text.Substring(0, 1) <> "@" Then txtWhColParmant.Text = "@W_" & txtWhColParmant.Text End If Dim mode As Boolean = False Dim index As Integer Dim strWhTabName As String Dim strWhTabColName As String Dim dtGrid As DataTable dtGrid = grdWhCol.DataSource strWhTabName = cmbWhTabName.DataSource.rows(CInt(cmbWhTabName.SelectedValue))("name") strWhTabColName = cmbWhTabColName.DataSource.rows(CInt(cmbWhTabColName.SelectedValue))("name") For index = 0 To grdWhCol.Rows.Count - 1 If dtGrid.Rows(index)("d1") = strWhTabName And dtGrid.Rows(index)("d2") = strWhTabColName Then mode = True Exit For End If Next If mode = True Then dtGrid.Rows(index)("d3") = cmbWhTabColName.DataSource.rows(CInt(cmbWhTabColName.SelectedValue))("remark") dtGrid.Rows(index)("d4") = txtWhColType.Text dtGrid.Rows(index)("d5") = txtWhColLen1.Text dtGrid.Rows(index)("d6") = txtWhColParmant.Text Else Dim dr As DataRow = dtGrid.NewRow dr("d1") = strWhTabName dr("d2") = strWhTabColName dr("d3") = cmbWhTabColName.DataSource.rows(CInt(cmbWhTabColName.SelectedValue))("remark") dr("d4") = txtWhColType.Text dr("d5") = txtWhColLen1.Text dr("d6") = txtWhColParmant.Text dtGrid.Rows.Add(dr) End If txtWhColParmant.Text = "" End Sub #End Region #Region "整体按钮" '清空 Private Sub ClearAll() cmbTabType.Visible = False cmbTabTo.Visible = False cmbTabF1.Visible = False cmbTabF2.Visible = False cmbTabF3.Visible = False cmbTabT1.Visible = False cmbTabT2.Visible = False cmbTabT3.Visible = False Dim dTabFrom As DataTable = Nothing dTabFrom = dtTable.Copy dTabFrom.Columns.Add("ID") dTabFrom.Columns.Add("SHOWNAME") For irow = 0 To dtTable.Rows.Count - 1 dTabFrom.Rows(irow)("ID") = irow dTabFrom.Rows(irow)("SHOWNAME") = dtTable.Rows(irow)(0) & " " & dtTable.Rows(irow)(1) Next cmbTabFrom.ValueMember = "ID" cmbTabFrom.DisplayMember = "SHOWNAME" cmbTabFrom.DataSource = dTabFrom cmbTabFrom.SelectedIndex = -1 cmbTabType.SelectedIndex = -1 cmbTabFrom.SelectedIndex = -1 cmbTabTo.SelectedIndex = -1 cmbTabF1.SelectedIndex = -1 cmbTabF2.SelectedIndex = -1 cmbTabF3.SelectedIndex = -1 cmbTabT1.SelectedIndex = -1 cmbTabT2.SelectedIndex = -1 cmbTabT3.SelectedIndex = -1 Dim dtFrom As DataTable dtFrom = grdTabFrom.DataSource If dtFrom IsNot Nothing Then dtFrom.Clear() End If selectDataClear() WhereDataClear() End Sub Private intParmat As Integer = 0 Private strParmat As String Private strParmatValue As String 'sql文做成 Private Sub sqlSourceSakusei() If grdTabFrom.Rows.Count <= 0 Then MessageBox.Show("请选择处理的from的表对象") Exit Sub End If If rdoDelete.Checked = False Then If grdSelCol.Rows.Count <= 0 Then MessageBox.Show("请选择检索处理的字段") Exit Sub End If End If Dim strSelString As String = "" Dim strFromString As String = "" Dim strWhereString As String = "" Dim strTemp As String Dim strSql As String = "" Dim strParmat1 As String = "" intParmat = 0 strParmat = "" strParmatValue = "" strSelString = strSelectSql() strFromString = strFromSql() strWhereString = strWhSql() If intParmat > 0 Then strParmat1 = " 'パラメーターの設定" & vbCrLf strParmat1 = strParmat1 & " Dim paras() As SqlParameter = New SqlParameter(" & intParmat - 1 & ") {}" & vbCrLf strParmat1 = strParmat1 & strParmat & vbCrLf strParmat1 = strParmat1 & strParmatValue & vbCrLf End If strSql = "" strSql = strSql & " 'SQL文の設定" & vbCrLf strSql = strSql & " Dim strSql As StringBuilder = New StringBuilder()" & vbCrLf & vbCrLf If rdoInsert.Checked = True Or rdoDelete.Checked = True Or rdoUpdate.Checked = True Then strSql = strSql & strFromString strSql = strSql & strSelString strSql = strSql & strWhereString strSql = strSql & vbCrLf & strParmat1 Else strSql = strSql & strSelString strSql = strSql & strFromString strSql = strSql & strWhereString strSql = strSql & vbCrLf & strParmat1 End If 'ログパラメーター If rdoDelete.Checked = True Or rdoUpdate.Checked = True Or rdoInsert.Checked = True Then strTemp = "" strTemp = strTemp & " 'ログパラメーター " & vbCrLf strTemp = strTemp & " Dim strProgromId As String" & vbCrLf strTemp = strTemp & " Dim strTypeAction As String" & vbCrLf strTemp = strTemp & " Dim strTabNa As String" & vbCrLf strTemp = strTemp & " Dim strTblKey As String" & vbCrLf strTemp = strTemp & " Dim strReseve As String" & vbCrLf strTemp = strTemp & "" & vbCrLf strTemp = strTemp & " 'プログラムID" & vbCrLf strTemp = strTemp & " strProgromId = ""TNETMST002_SEL""" & vbCrLf strTemp = strTemp & "" & vbCrLf strTemp = strTemp & " '操作" & vbCrLf strTemp = strTemp & " strTypeAction = ""UPDATE""" & vbCrLf strTemp = strTemp & "" & vbCrLf strTemp = strTemp & " '対象テーブル" & vbCrLf strTemp = strTemp & " strTabNa = ""SHIP_MST""" & vbCrLf strTemp = strTemp & "" & vbCrLf strTemp = strTemp & " 'キー項目" & vbCrLf strTemp = strTemp & " strTblKey = ""SHIP_CD:"" & tnetmst002SelMod.ShipCd & "";APP_START_DATE:"" & tnetmst002SelMod.AppStartDate" & vbCrLf strTemp = strTemp & "" & vbCrLf strTemp = strTemp & " '予備" & vbCrLf strTemp = strTemp & " strReseve = """ & vbCrLf strTemp = strTemp & "" & vbCrLf strTemp = strTemp & " Dim parasLog() As SqlParameter = New SqlParameter(5) {}" & vbCrLf strTemp = strTemp & " parasLog(0) = New SqlParameter(""@UserId"", SqlDbType.Char, 6)" & vbCrLf strTemp = strTemp & " parasLog(0).Value = SessionUtil.SESSION_PCHARGE_CD & "" '担当者コード" & vbCrLf strTemp = strTemp & " parasLog(1) = New SqlParameter(""@ProgromId"", SqlDbType.VarChar, 20)" & vbCrLf strTemp = strTemp & " parasLog(1).Value = strProgromId " & vbCrLf strTemp = strTemp & " parasLog(2) = New SqlParameter(""@TypeAction"", SqlDbType.Char, 6) " & vbCrLf strTemp = strTemp & " parasLog(2).Value = strTypeAction" & vbCrLf strTemp = strTemp & " parasLog(3) = New SqlParameter(""@TabNa"", SqlDbType.VarChar, 20)" & vbCrLf strTemp = strTemp & " parasLog(3).Value = strTabNa" & vbCrLf strTemp = strTemp & " parasLog(4) = New SqlParameter(""@TblKey"", SqlDbType.VarChar, 200)" & vbCrLf strTemp = strTemp & " parasLog(4).Value = strTblKey" & vbCrLf strTemp = strTemp & " parasLog(5) = New SqlParameter(""@Reseve"", SqlDbType.VarChar, 200)" & vbCrLf strTemp = strTemp & " parasLog(5).Value = strReseve" & vbCrLf strSql = strSql & vbCrLf & strTemp End If 'db检索 If rdoSelect.Checked = True Then strSql = strSql & "" & vbCrLf strSql = strSql & " Try" & vbCrLf strSql = strSql & " Return Me.ExecuteDataTable(CommandType.Text, strSql.ToString, paras)" & vbCrLf strSql = strSql & " Catch ex As SqlException" & vbCrLf strSql = strSql & " Throw New DaoAccessException(ex)" & vbCrLf strSql = strSql & " End Try" & vbCrLf Else strSql = strSql & "" & vbCrLf strSql = strSql & " Try" & vbCrLf If rdoInsert.Checked = True Then strSql = strSql & " Return Me.ExecuteNonQuery(CommandType.Text, strSql.ToString, paras, nothing, parasLog)" & vbCrLf Else strSql = strSql & " Return Me.ExecuteNonQuery(CommandType.Text, strSql.ToString, paras, tnetmst001Mod.HaitaDateTime, parasLog)" & vbCrLf End If strSql = strSql & " Catch ex As SqlException" & vbCrLf strSql = strSql & " Throw New DaoAccessException(ex)" & vbCrLf strSql = strSql & " End Try" & vbCrLf End If strTemp = "" & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf strTemp = strTemp & "'***************************************************************************" & vbCrLf strTemp = strTemp & "'" & Now.ToString() & vbCrLf & vbCrLf & vbCrLf strSql = strTemp & strSql Dim strfile As String strfile = "Vb_Sql_Source" & Now.ToString("yyyyMMdd") & ".vb" If System.IO.File.Exists(strfile) = False Then System.IO.File.WriteAllText(strfile, strSql) Else System.IO.File.AppendAllText(strfile, strSql) End If MessageBox.Show("vb的sql source生成成功,source存放当前目录下的:【" & strfile & "】文件中。") End Sub Private Function strSelectSql() As String Dim strSelString As String = "" Dim strInsValue As String = "" Dim strTemp As String Dim strTValue As String Dim strTab As String Dim strCol As String Dim strCom As String Dim strType As String Dim strLen As String Dim strASName As String '删除 If rdoDelete.Checked = True Then Return "" End If '检索 If rdoSelect.Checked = True Then strSelString = "" Dim dtSel As DataTable dtSel = grdSelCol.DataSource For index As Integer = 0 To dtSel.Rows.Count - 1 strTab = dtSel.Rows(index)("d1") strCol = dtSel.Rows(index)("d2") strCom = dtSel.Rows(index)("d3") strType = dtSel.Rows(index)("d4") strLen = dtSel.Rows(index)("d5") strASName = dtSel.Rows(index)("d6") If index <= 0 Then strTemp = " strSql.Append("" SELECT "")" & vbCrLf Else strTemp = "" End If strTemp = strTemp & " strSql.Append("" " If index > 0 Then strTemp = strTemp & ", " End If If strType.ToUpper = "char".ToUpper() Then If grdTabFrom.Rows.Count > 1 Then strTemp = strTemp & "RTRIM(" & strTab & "." & strCol & ")" Else strTemp = strTemp & "RTRIM(" & strCol & ")" End If If String.IsNullOrEmpty(strASName) = False Then strTemp = strTemp & " AS " & strASName Else strTemp = strTemp & " AS " & strCol End If Else If grdTabFrom.Rows.Count > 1 Then strTemp = strTemp & strTab & "." & strCol Else strTemp = strTemp & "." & strCol End If If String.IsNullOrEmpty(strASName) = False Then strTemp = strTemp & " AS " & strASName End If End If If String.IsNullOrEmpty(strASName) = False Then strTemp = strTemp & " AS " & strASName End If strTemp = strTemp & " "")" If String.IsNullOrEmpty(strCom) = False Then strTemp = strTemp & " '" & strCom End If strSelString = strSelString & strTemp & vbCrLf Next Return strSelString End If '更新 If rdoUpdate.Checked = True Then strSelString = "" Dim dtSel As DataTable dtSel = grdSelCol.DataSource For index As Integer = 0 To dtSel.Rows.Count - 1 strTab = dtSel.Rows(index)("d1") strCol = dtSel.Rows(index)("d2") strCom = dtSel.Rows(index)("d3") strType = dtSel.Rows(index)("d4") strLen = dtSel.Rows(index)("d5") strASName = dtSel.Rows(index)("d6") strTemp = " strSql.Append("" " If index > 0 Then strTemp = strTemp & ", " End If strTemp = strTemp & strCol & " = " & strASName & " "")" If String.IsNullOrEmpty(strCom) = False Then strTemp = strTemp & " '" & strCom End If strSelString = strSelString & strTemp & vbCrLf strParmat = strParmat & " paras(" & intParmat & ") = New SqlParameter(""" strParmat = strParmat & strASName & """, SqlDbType." strParmat = strParmat & strType If strType.ToUpper <> "Date".ToUpper And strType.ToUpper <> "DateTime".ToUpper Then strParmat = strParmat & ", " & strLen End If strParmat = strParmat & " )" If String.IsNullOrEmpty(strCom) = False Then strParmat = strParmat & " '" & strCom End If strParmat = strParmat & vbCrLf strParmatValue = strParmatValue & " paras(" & intParmat & ").Value = " strParmatValue = strParmatValue & "1" If String.IsNullOrEmpty(strCom) = False Then strParmatValue = strParmatValue & " '" & strCom & " (" & strType & ")" Else strParmatValue = strParmatValue & " '" & " (" & strType & ")" End If strParmatValue = strParmatValue & vbCrLf intParmat = intParmat + 1 Next Return strSelString End If '插入 If rdoInsert.Checked = True Then strSelString = "" strInsValue = "" Dim dtSel As DataTable dtSel = grdSelCol.DataSource For index As Integer = 0 To dtSel.Rows.Count - 1 strTab = dtSel.Rows(index)("d1") strCol = dtSel.Rows(index)("d2") strCom = dtSel.Rows(index)("d3") strType = dtSel.Rows(index)("d4") strLen = dtSel.Rows(index)("d5") strASName = dtSel.Rows(index)("d6") strTemp = " strSql.Append("" " strTValue = " strSql.Append("" " If index > 0 Then strTemp = strTemp & ", " strTValue = strTValue & ", " End If strTemp = strTemp & strCol & " "")" strTValue = strTValue & strASName & " "")" If String.IsNullOrEmpty(strCom) = False Then strTemp = strTemp & " '" & strCom strTValue = strTValue & " '" & strCom End If strSelString = strSelString & strTemp & vbCrLf strInsValue = strInsValue & strTValue & vbCrLf strParmat = strParmat & " paras(" & intParmat & ") = New SqlParameter(""" strParmat = strParmat & strASName & """, SqlDbType." strParmat = strParmat & strType If strType.ToUpper <> "Date".ToUpper And strType.ToUpper <> "DateTime".ToUpper Then strParmat = strParmat & ", " & strLen End If strParmat = strParmat & " )" If String.IsNullOrEmpty(strCom) = False Then strParmat = strParmat & " '" & strCom End If strParmat = strParmat & vbCrLf strParmatValue = strParmatValue & " paras(" & intParmat & ").Value = " strParmatValue = strParmatValue & "1" If String.IsNullOrEmpty(strCom) = False Then strParmatValue = strParmatValue & " '" & strCom & " (" & strType & ")" Else strParmatValue = strParmatValue & " '" & " (" & strType & ")" End If strParmatValue = strParmatValue & vbCrLf intParmat = intParmat + 1 Next strSelString = strSelString & " strSql.Append("" ) "")" & vbCrLf strSelString = strSelString & " strSql.Append(""VALUES ( "")" & vbCrLf strSelString = strSelString & strInsValue strSelString = strSelString & " strSql.Append("" ) "")" & vbCrLf Return strSelString End If Return "" End Function Private Function strFromSql() As String Dim strFromstring As String = "" Dim strTemp As String If rdoSelect.Checked = True Then Dim strType As String Dim strFromTab As String Dim strToTab As String Dim strCom As String Dim strLan1 As String Dim strLan2 As String Dim strLan3 As String Dim dtFrom As DataTable dtFrom = grdTabFrom.DataSource For index As Integer = 0 To dtFrom.Rows.Count - 1 strType = dtFrom.Rows(index)("d1") & "" strFromTab = dtFrom.Rows(index)("d2") & "" strToTab = dtFrom.Rows(index)("d3") & "" strCom = dtFrom.Rows(index)("d4") & "" strLan1 = dtFrom.Rows(index)("d5") & "" strLan2 = dtFrom.Rows(index)("d6") & "" strLan3 = dtFrom.Rows(index)("d7") & "" strTemp = "" If index = 0 Then strTemp = strTemp & " strSql.Append("" FROM "")" & vbCrLf strTemp = strTemp & " strSql.Append("" " strTemp = strTemp & strFromTab & " "")" If String.IsNullOrEmpty(strCom) = False Then strTemp = strTemp & " '" & strCom End If strTemp = strTemp & vbCrLf Else strTemp = strTemp & " strSql.Append("" " strTemp = strTemp & strType & " " & strToTab & " "")" If String.IsNullOrEmpty(strCom) = False Then strTemp = strTemp & " '" & strCom End If strTemp = strTemp & vbCrLf Dim intOnNum As Integer intOnNum = 0 If String.IsNullOrEmpty(strLan1) = False Then strTemp = strTemp & " strSql.Append("" " If intOnNum = 0 Then strTemp = strTemp & " ON " Else strTemp = strTemp & " AND " End If strTemp = strTemp & strLan1 & " "")" & vbCrLf intOnNum = intOnNum + 1 End If If String.IsNullOrEmpty(strLan2) = False Then strTemp = strTemp & " strSql.Append("" " If intOnNum = 0 Then strTemp = strTemp & " ON " Else strTemp = strTemp & " AND " End If strTemp = strTemp & strLan2 & " "")" & vbCrLf intOnNum = intOnNum + 1 End If If String.IsNullOrEmpty(strLan3) = False Then strTemp = strTemp & " strSql.Append("" " If intOnNum = 0 Then strTemp = strTemp & " ON " Else strTemp = strTemp & " AND " End If strTemp = strTemp & strLan3 & " "")" & vbCrLf intOnNum = intOnNum + 1 End If strTemp = strTemp End If strFromstring = strFromstring & strTemp Next Else Dim strTab As String Dim strCom As String Dim dtFrom As DataTable dtFrom = grdTabFrom.DataSource strTab = dtFrom.Rows(0)("d2") strCom = dtFrom.Rows(0)("d4") strTemp = "" strTemp = strTemp & " strSql.Append("" " If rdoInsert.Checked = True Then strTemp = strTemp & "INSERT INTO " & strTab & " ( "")" End If If rdoDelete.Checked = True Then strTemp = strTemp & "DELETE FROM " & strTab & " "")" End If If rdoUpdate.Checked = True Then strTemp = strTemp & "UPDATE " & strTab & " SET "")" End If If String.IsNullOrEmpty(strCom) = False Then strTemp = strTemp & " '" & strCom End If strFromstring = strTemp & vbCrLf End If Return strFromstring End Function Private Function strWhSql() As String Dim strWhString As String = "" Dim strTemp As String Dim strTab As String Dim strCol As String Dim strCom As String Dim strType As String Dim strLen As String Dim strASName As String If rdoInsert.Checked = True Then Return "" End If Dim dtWh As DataTable dtWh = grdWhCol.DataSource For index As Integer = 0 To dtWh.Rows.Count - 1 strTab = dtWh.Rows(index)("d1") strCol = dtWh.Rows(index)("d2") strCom = dtWh.Rows(index)("d3") strType = dtWh.Rows(index)("d4") strLen = dtWh.Rows(index)("d5") strASName = dtWh.Rows(index)("d6") If index > 0 Then strTemp = "" Else strTemp = " strSql.Append("" WHERE "")" & vbCrLf End If strTemp = strTemp & " strSql.Append("" " If index > 0 Then strTemp = strTemp & "AND " End If If grdTabFrom.Rows.Count > 1 Then strTemp = strTemp & strTab & "." & strCol & " = " & strASName & " "")" Else strTemp = strTemp & strCol & " = " & strASName & " "")" End If If String.IsNullOrEmpty(strCom) = False Then strTemp = strTemp & " '" & strCom End If strTemp = strTemp & vbCrLf strWhString = strWhString & strTemp strParmat = strParmat & " paras(" & intParmat & ") = New SqlParameter(""" strParmat = strParmat & strASName & """, SqlDbType." strParmat = strParmat & strType If strType.ToUpper <> "Date".ToUpper And strType.ToUpper <> "DateTime".ToUpper Then strParmat = strParmat & ", " & strLen End If strParmat = strParmat & " )" If String.IsNullOrEmpty(strCom) = False Then strParmat = strParmat & " '" & strCom End If strParmat = strParmat & vbCrLf strParmatValue = strParmatValue & " paras(" & intParmat & ").Value = " strParmatValue = strParmatValue & "1" If String.IsNullOrEmpty(strCom) = False Then strParmatValue = strParmatValue & " '" & strCom & " (" & strType & ")" Else strParmatValue = strParmatValue & " '" & " (" & strType & ")" End If strParmatValue = strParmatValue & vbCrLf intParmat = intParmat + 1 Next Return strWhString End Function #End Region '执行检索sql问返回结果集 Private Function SelsectDb(ByVal strsql As String) As DataTable strConnectstring = "Password=" & txtDBPasswd.Text & ";Persist Security Info=True;User ID=" & txtDBUser.Text & ";Initial Catalog=" & txtDBName.Text & ";Data Source=" & txtDBIp.Text Dim conn As SqlConnection = Nothing Dim comm As SqlCommand = Nothing Dim datap As SqlDataAdapter = Nothing Dim dt As DataTable = New DataTable() Try conn = New SqlConnection(strConnectstring) datap = New SqlDataAdapter() comm = New SqlCommand() conn.Open() comm.Connection = conn comm.CommandType = CommandType.Text comm.CommandText = strsql datap.SelectCommand = comm datap.Fill(dt) Return dt Catch ex As Exception MessageBox.Show(ex.Message) Return Nothing Finally If datap IsNot Nothing Then datap.Dispose() End If If comm IsNot Nothing Then comm.Dispose() End If datap.Dispose() If conn IsNot Nothing Then If conn.State = ConnectionState.Open Then conn.Close() End If End If End Try End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click End Sub End Class
View Code
相关文章推荐
- Redis主从复制
- Windows下安装MySQL卡在Starting Server..的解决办法
- 测试必备技能系列1 :通过mysql命令进行脚本数据导入
- mysql主从复制 设置中继日志自动清除 主从同步失败,如何快速同步
- mysql Slave_IO_Running:NO(解决方法)
- PL/SQL之流程控制语句
- mysql 更改root账户密码 - mysql-5.7.11-osx10.10
- Redis常用数据类型
- SQL Server中的Image数据类型的操作
- window下Redis安装使用
- 读写数据库Image类型数据
- perl unload mysql utf-8字符集 需要设置$dbh->do("SET NAMES utf8");
- 对MYSQL IFNULL函数的使用进行了具体的叙述
- MySQL知识(十七)——视图
- MySQL是最流行的关系型数据库管理系统
- MongoDB数据库安装
- 探索Oracle之11g DataGuard 配置
- MySQL5.7密码安全策略
- MySQL批量插入数据脚本
- Oracle Data Guard 重要配置参数