【问题标题】:Unhandled Exception: System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)未处理的异常:System.FormatException:Guid 应包含 32 位数字和 4 个破折号 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
【发布时间】:2020-02-27 09:36:07
【问题描述】:

我正在检查 Xamarin.android 的在线数据库的连接,但此错误不断出现..我计划将其连接到我的研究项目的 rasp pi 数据库..请帮助

using Android.App;
using Android.OS;
using Android.Widget;
using MySql.Data.MySqlClient;
using System;
using System.Data;

namespace sqq
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : Activity
{
    private EditText urs, pss;
    private Button sin;
    private TextView suc;
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        SetContentView(Resource.Layout.activity_main);


        sin = FindViewById<Button>(Resource.Id.button1);
        urs = FindViewById<EditText>(Resource.Id.textView1);
        pss = FindViewById<EditText>(Resource.Id.textView2);
        suc = FindViewById<TextView>(Resource.Id.textView3);

        sin.Click += Sin_Click;

    }
    private void Sin_Click(object sender, EventArgs e)
    {
        MySqlConnection con = new MySqlConnection("Server=db4free.net; Port=3306;       Database=rolandvill; User Id=roland11; Password=roland123;charset=utf8");

        try
        {

            if (con.State == ConnectionState.Closed)
            {

                con.Open();
                suc.Text = "Success";

            }
        }
        catch (MySqlException ex)
        {
            suc.Text = ex.ToString();

        }
        finally
        {
            con.Close();
        }

    }
}
}

我一直在尝试我在这里看到的所有解决方案,但没有一个有效。

这里是错误发生的地方

这是我的 activity_main.axml 的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
    <EditText
    android:text="UserName"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minWidth="25px"
    android:minHeight="25px"
    android:id="@+id/textView1" />
<EditText
    android:text="Password"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/textView1"
    android:id="@+id/textView2" />
<Button
    android:text="Button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/textView2"
    android:id="@+id/button1" />
<TextView
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/button1"
    android:id="@+id/textView3" />

 </RelativeLayout>

【问题讨论】:

  • 错误出现在哪一行?你能分享代码吗?你能分享SetContentView(Resource.Layout.activity_main)的代码吗?
  • 我更新了帖子
  • 我认为连接字符串是错误的,它会收到一个钝的错误消息。你能验证连接字符串吗?
  • @jdweng 它的标准连接字符串
  • 连接字符串不起作用。可能是许可证问题、端口被阻止或病毒正在攻击端口 3306。

标签: c# xamarin.android


【解决方案1】:

参考earlier post heremysql bug report

添加 'OldGuids=True;'进入连接字符串工作:

MySqlConnection con = new MySqlConnection("Server=db4free.net; Port=3306;       Database=rolandvill; User Id=roland11; Password=roland123;OldGuids=True;charset=utf8");

此外,正如@Bradley Grainger 所说,通过添加 OldGuids=true,您应该知道任何 BINARY(16) 列都将作为 Guid 而不是 byte[] 返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 2018-03-20
    相关资源
    最近更新 更多