Нужна помощь в кодировании цикла в VB.net для создания папок в Windows на основе имен пользователей в удаленной БД - PullRequest
1 голос
/ 26 июля 2011

У меня уже есть этот код (более или менее) в Java для ОС Linux, однако я недостаточно знаком с синтаксисом .net, чтобы перевести мой код Java в код VB2010 ... Поэтому я надеялся, что кто-то здесь сможет помоги мне с этим.

The issue:

Я пытаюсь (как говорится в заголовке) создавать папки в моем окне на основе записей в нашей базе данных клиентов (у нас их много, поэтому я не собираюсь делать их вручную, лол).

Я хочу использовать VB.net для создания программы, которая будет зацикливать запрос в базе данных SQL, получать идентификаторы клиентов наших клиентов и создавать папки для каждого из этих имен в определенном каталоге.

My Java code that I need to translate:

//Initializers
Statement stmt;
ResultSet rs;

rs = stmt.executeQuery("SELECT CustomerID FROM customerlist;");

System.out.println("Creating customer user database:\n");

while(rs.next()){
    String str1 = rs.getString("CustomerID");
        try {
            // Create user & Home Directory
                Process p = Runtime.getRuntime().exec("sudo useradd " + str1  + " --shell /bin/sh -m " );
                BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));

            System.out.println("Created user: \t" + str1);

            String line = null;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
            Thread.sleep(100);
        } catch (IOException e) {
            e.printStackTrace();
        }

}

Мне нужен код vb для того же, но только для создания папки и для ОС Windows.

Important notes:

  • Я использую Imports MySql.Data.MySqlClient для соединения с БД.
  • это УДАЛЕННЫЙ сервер mysql, а не локальный (не знаю, нужна ли эта заметка).
  • У нас около 6000 клиентов ... (поэтому я не делаю это вручную!)
  • Босс говорит, что нужно переключиться с Java на VB, поэтому не стоит спорить о необходимости придерживаться Java, пожалуйста.

Видя, как люди думают, что я прошу раздаточный материал для всей программы ... вот что у меня есть:

Private Sub ButtonLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLogin.Click
    conn = New MySqlConnection()
    conn.ConnectionString = "server=xxx" & ";" & "user id=xxx" & ";" & "password=xxx" & ";" & "database=companysqldb"
    Try
        conn.Open()
        MessageBox.Show("Connection Opened Successfully")

        'while loop pseudo
        '------------------
        'set query string to "SELECT CustomerID FROM customerlist;"
        'while looping through query
            'set stringvar to current loop's CustomerID

            'Create directory
            If(Not System.IO.Directory.Exists("c:\pub\users\" & stringvar)) Then System.IO.Directory.CreateDirectory("c:\pub\users\" & stringvar)
            RichTextBox.AppendText(vbCrLf & "Added folder: " & stringvar)
            RichTextBox.ScrollToCaret()

        'end while loop

    Catch myerror As MySqlException
        MessageBox.Show("Error Connecting to Database: " & myerror.Message)
    End Try

End Sub

Как вы можете видеть, большая часть его уже написана, однако моя основная трудность заключается в синтаксисе цикла while и SQL-запроса.

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

РЕШЕНИЕ:

Ну, после нескольких часов поиска в сети, мне наконец удалось найти решение, которое я искал.

изменилось:

    conn.Open()
    MessageBox.Show("Connection Opened Successfully")

    'while loop pseudo
    '------------------
    'set query string to "SELECT CustomerID FROM customerlist;"
    'while looping through query
        'set stringvar to current loop's CustomerID

        'Create directory
        If(Not System.IO.Directory.Exists("c:\pub\users\" & stringvar)) Then System.IO.Directory.CreateDirectory("c:\pub\users\" & stringvar)
        RichTextBox.AppendText(vbCrLf & "Added folder: " & stringvar)
        RichTextBox.ScrollToCaret()

    'end while loop

до

conn.Open()
MessageBox.Show("Connection Opened Successfully")
Dim command As New MySqlCommand("SELECT CustomerID from customerlist", conn)
        Dim stringvar As String
        Dim count As Integer = 1

        myReader = command.ExecuteReader
        While (myReader.Read())
            stringvar = myReader(0).ToString

            If (Not System.IO.Directory.Exists("c:\pub\users\" & stringvar)) Then
                System.IO.Directory.CreateDirectory("c:\pub\users\" & stringvar)
                TextBox.AppendText(vbCrLf & count & ":   Created folder for CustomerID: " & stringvar)
                TextBox.ScrollToCaret()
            Else
                TextBox.AppendText(vbCrLf & count & ":   Could *NOT* creat folder for CustomerID: " & stringvar)
                TextBox.ScrollToCaret()
            End If

            count = count + 1
        End While

Произведено:

CustomerID: 11112
CustomerID: 11113
CustomerID: 11114
0 голосов
/ 15 августа 2014
 cmd.Connection = conn
        conn.Open()

        Dim cnt As Integer
        Dim CustCode As String


        cmd.CommandText = "Select * from Checks"

        rd = cmd.ExecuteReader

        While rd.Read()
            cnt = cnt + 1
        End While

        If cnt = 0 Then
            cnt = cnt + 1
        Else
            cnt = cnt + 1
        End If
        CustCode = "Cust_00" & cnt
        TextBox1.Text = CustCode
        rd.Close()
...