【问题标题】:How to return response from sql query in ASP.NET?如何从 ASP.NET 中的 sql 查询返回响应?
【发布时间】:2021-07-29 19:09:29
【问题描述】:

我正在尝试创建一个简单的翻译 API,它将英语单词作为用户的参数,并从 MySQL 数据库返回意大利语对应的单词。这是我的 VB.NET 控制器

Public Function GetValue(EnglishWord As String)
        Dim connStr As String = "server=mysql.mydatabase.com;user=myuser;database=mydatabase;port=3306;password=mypassword;"
        Dim conn As New MySqlConnection(connStr)
        conn.Open()
        Dim command = New MySqlCommand("SELECT ItalianWord FROM Book WHERE EnglishWord=(" + EnglishWord + ")", conn)
        Dim reader = command.ExecuteReader()
        Return reader.GetValue(0)
        Console.WriteLine("Done.")

    End Function

但是返回值很奇怪:

我希望只有一个字符串值,而不是 value1value2。我做错了什么?非常感谢任何建议。

【问题讨论】:

    标签: asp.net vb.net asp.net-web-api


    【解决方案1】:

    使用Using...End Using 确保您的数据库对象已被释放。

    .Execute... 之前不要打开连接

    vb.net 中的函数需要DataType

    Console.WriteLine 将永远不会执行,因为您在前一行使用Return 留下了函数

    始终使用参数来避免 Sql 注入。我不得不猜测EnglishWord 的数据类型。检查您的数据库的类型是否正确。

    我假设每个英文单词只有一个翻译词。

    Public Function GetValue(EnglishWord As String) As String
        Dim connStr As String = "server=mysql.mydatabase.com;user=myuser;database=mydatabase;port=3306;password=mypassword;"
        Dim TranslatedWord As Object
        Using conn As New MySqlConnection(connStr),
                command As New MySqlCommand("SELECT ItalianWord FROM Book WHERE EnglishWord=@EnglishWord;", conn)
            command.Parameters.Add("@EnglishWord", MySqlDbType.VarChar).Value = EnglishWord
            con.Open()
            TranslatedWord = command.ExecuteScalar
        End Using
        If TranslatedWord Is Nothing Then
            Return "No word found."
        Else
            Return TranslatedWord.ToString
        End If
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-12
      • 2020-01-22
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多