GVKun编程网logo

mono 访问 oracle、mysql(mysql访问oracle数据库)

3

这篇文章主要围绕mono访问oracle、mysql和mysql访问oracle数据库展开,旨在为您提供一份详细的参考资料。我们将全面介绍mono访问oracle、mysql的优缺点,解答mysql访

这篇文章主要围绕mono 访问 oracle、mysqlmysql访问oracle数据库展开,旨在为您提供一份详细的参考资料。我们将全面介绍mono 访问 oracle、mysql的优缺点,解答mysql访问oracle数据库的相关问题,同时也会为您带来c# – Mono for Android,WebView输入字段filechooser不起作用、c# – Mono for Bit退出代码255,位于BitmapFactory.DecodeStream上、c# – On XNA to Mono Android Conversions:处理活动生命周期的简单(或最简单)方法是什么?、centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?的实用方法。

本文目录一览:

mono 访问 oracle、mysql(mysql访问oracle数据库)

mono 访问 oracle、mysql(mysql访问oracle数据库)

访问oracle :http://www.mono-project.com/docs/database-access/providers/oracle/

访问MysqL :http://www.mono-project.com/docs/database-access/providers/mysql/

c# – Mono for Android,WebView输入字段filechooser不起作用

c# – Mono for Android,WebView输入字段filechooser不起作用

我有用于上传文件的网页.用户使用< input type =“file”/>选择文件并按下提交按钮,一切正常.现在我需要创建Android应用程序(在C#with mono for android),它包含简单的webview,并且必须像web版本一样工作.

但我偶然发现了这个问题 – 当我点击选择文件按钮时,文件对话框无法打开.

几天我用Google搜索了这个问题,但我没有找到任何解决方案.看起来有workaround on Java platform,但它不适用于C#.

有人有任何想法如何让它工作?

解决方法:

我知道如何使它工作.它的一部分是沼泽标准的“如何绑定虚拟方法”,其中一部分是纯粹的无懈可击的邪恶.

首先,我们需要一个“中间人”.由于WebChromeClient未声明openFileChooser()方法,因此我们需要声明一个名为OpenFileWebChromeClient的版本.它声明了一个虚拟的OpenFileChooser方法,并为它提供了一个绑定,以便可以覆盖它:

using System;

using Android.App;
using Android.Content;
using Android.Runtime;
using Android.OS;
using Android.Webkit;

namespace Scratch.FileUpload
{
    [Register ("android/webkit/WebChromeClient", DoNotGenerateAcw=true)]
    class OpenFileWebChromeClient : WebChromeClient {

        static IntPtr id_openFileChooser;
        [Register ("openFileChooser", "(Landroid/webkit/ValueCallback;)V", "GetopenFileChooserHandler")]
        public virtual void OpenFileChooser (IValueCallback uploadMsg)
        {
            if (id_openFileChooser == IntPtr.Zero)
                id_openFileChooser = jnienv.getmethodID (ThresholdClass, "openFileChooser", "(Landroid/webkit/ValueCallback;)V");

            if (GetType () == ThresholdType)
                jnienv.CallVoidMethod  (Handle, id_openFileChooser, new JValue (jnienv.ToJniHandle (uploadMsg)));
            else
                jnienv.CallNonvirtualVoidMethod  (Handle, ThresholdClass, id_openFileChooser, new JValue (jnienv.ToJniHandle (uploadMsg)));
        }

#pragma warning disable 0169
        static Delegate cb_openFileChooser;
        static Delegate GetopenFileChooserHandler ()
        {
            if (cb_openFileChooser == null)
                cb_openFileChooser = JNINativeWrapper.CreateDelegate ((Action<IntPtr, IntPtr, IntPtr>) n_OpenFileChooser);
            return cb_openFileChooser;
        }

        static void n_OpenFileChooser (IntPtr jnienv, IntPtr native__this, IntPtr native_uploadMsg)
        {
            OpenFileWebChromeClient __this = java.lang.Object.Getobject<OpenFileWebChromeClient> (native__this, JniHandleOwnership.DoNottransfer);
            var uploadMsg = java.lang.Object.Getobject<IValueCallback> (native_uploadMsg, JniHandleOwnership.DoNottransfer);
            __this.OpenFileChooser (uploadMsg);
        }
#pragma warning restore 0169
    }
}

接下来,由于C#缺少匿名内部类,我们需要一个名为MyOpenFileWebChromeClient的显式类:

namespace Scratch.FileUpload {
    class MyOpenFileWebChromeClient : OpenFileWebChromeClient {

        Action<IValueCallback> cb;

        public MyOpenFileWebChromeClient(Action<IValueCallback> cb)
        {
            this.cb = cb;
        }

        public override void OpenFileChooser (IValueCallback uploadMsg)
        {
            cb (uploadMsg);
        }
    }

Activity端口与您引用的博客文章相同,只是它使用MyOpenFileWebChromeClient而不是匿名内部类.我还更新了一些逻辑来显示OnActivityResult()收到的URI:

namespace Scratch.FileUpload {

    [Activity (Label = "Scratch.FileUpload", MainLauncher = true)]
    public class Activity1 : Activity
    {
        private WebView wv;
        private IValueCallback mUploadMessage;
        const int FilechooserResultcode = 1;

        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);

            wv = new WebView (this);
            wv.SetWebViewClient(new WebViewClient());
            wv.SetWebChromeClient(new MyOpenFileWebChromeClient(uploadMsg => {
                        mUploadMessage = uploadMsg;
                        var intent = new Intent (Intent.ActionGetContent);
                        intent.AddCategory(Intent.CategoryOpenable);
                        intent.SetType("image/*");
                        StartActivityForResult(Intent.CreateChooser(intent, "File Chooser"),
                            FilechooserResultcode);
            }));

            SetHtml(null);

            SetContentView(wv);
        }

        void SetHtml(string filename)
        {
            string html = @"<html>
<body>
<h1>Hello, world!</h1>
<p>Input Box:</p>
<input type=""file"" />
<p>URI: " + filename + @"
</body>
</html>";
            wv.LoadData(html, "text/html", "utf-8");
        }

        protected override void OnActivityResult (int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult (requestCode, resultCode, data);

            if (requestCode == FilechooserResultcode) {
                if (mUploadMessage == null)
                    return;
                var result = data == null || resultCode != Result.Ok
                    ? null
                    : data.Data;
                SetHtml(result.ToString());
                mUploadMessage.OnReceiveValue(result);
                mUploadMessage = null;
            }
        }
    }
}

可悲的是,现在是时候采取纯粹的彻头彻尾的邪恶行为了. MyOpenFileWebChromeClient的上述声明的问题在于它不起作用,原因与M0S’博客无法在匿名内部类声明中使用@Override相同:你构建应用程序的android.jar不会声明openFileChooser()方法.

构建过程将生成Android Callable Wrappers,其中必须包含有效的Java代码.问题是生成的代码使用@Override来覆盖方法和接口方法,从而产生MyOpenFileWebChromeClient的Android Callable Wrapper:

package scratch.fileupload;


public class MyOpenFileWebChromeClient
extends android.webkit.WebChromeClient
{
    static final String __md_methods;
    static {
        __md_methods = 
            "n_openFileChooser:(Landroid/webkit/ValueCallback;)V:GetopenFileChooserHandler\n" +
            "";
        mono.android.Runtime.register ("Scratch.FileUpload.MyOpenFileWebChromeClient, Scratch.FileUpload, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", MyOpenFileWebChromeClient.class, __md_methods);
    }

    @Override
    public void openFileChooser (android.webkit.ValueCallback p0)
    {
        n_openFileChooser (p0);
    }

    private native void n_openFileChooser (android.webkit.ValueCallback p0);

    java.util.ArrayList refList;
    public void monodroidAddReference (java.lang.Object obj)
    {
        if (refList == null)
            refList = new java.util.ArrayList ();
        refList.add (obj);
    }

    public void monodroidClearReferences ()
    {
        if (refList != null)
            refList.clear ();
    }
}

显然,MyOpenFileWebChromeClient.openFileChooser()上的@Override会产生编译错误,那么我们如何才能使这个工作呢?通过提供我们自己的@Override注释!

package scratch.fileupload;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.soURCE)
public @interface Override {
}

将上述内容放入名为Override.java的文件中,将其添加到项目中,并将其Build操作设置为AndroidJavaSource.

生成的项目有效,因为我们在与MyOpenFileWebChromeClient类型相同的包中提供自定义@Override注释. (这因此要求您知道生成的包名称是什么,并且为每个包提供单独的@Override注释.)同一包中的类型优先于导入的名称,甚至来自java的名称.lang,所以我们的自定义@Override注释不仅编译,它还被MyOpenFileWebChromeClient android可调用包装器使用,优先于java.lang.Override注释.

我确实说这是纯粹的不朽邪恶,不是吗?

c# – Mono for Bit退出代码255,位于BitmapFactory.DecodeStream上

c# – Mono for Bit退出代码255,位于BitmapFactory.DecodeStream上

我正在使用Mono for Android(截至本文的最新版本)和Visual Studio插件来构建Android应用程序.它针对API Level 8,Android 2.2框架.

该应用程序在运行Android 2.2.2版本的摩托罗拉Droid上正常运行
在运行Android 2.3.3的摩托罗拉Droid X2上几乎没有来自调试器的输出崩溃

唯一的输出是:程序’Mono’退出代码255(0xff).

崩溃发生在这个方法的第一行开始使用(Bitmap …

public static Drawable GetDrawable(string url) {
    try {
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        using (Bitmap bitmap = Android.Graphics.BitmapFactory.DecodeStream(response.GetResponseStream())) {
            Drawable image = (Drawable)(new BitmapDrawable(bitmap));
            return image;
        }
    }
    catch {
        return null;
    }
}

如果我在该行设置断点,它会正确断开,但我找不到任何错误.如果我在该行之后设置断点,则调试器只会分离并且app force退出.

我有一个类似的方法,从JSON返回一个对象,它工作正常.所以,我很确定它与动态位图创建有关,但此时我已经尝试了我能想到的一切.

更新:

我刚刚在一个小型的,自包含的项目中重现了这个问题:DrawableTest.zip

这是完整的代码:

using System;
using System.Net;
using System.Threading;
using Android.App;
using Android.Widget;
using Android.OS;
using Android.Graphics;
using Android.Graphics.Drawables;

namespace DrawableTest {
    [Activity(Label = "DrawableTest", MainLauncher = true, Icon = "@drawable/icon")]
    public class Activity1 : Activity {

        ImageView mImage;
        Button mButton;
        public const string mImageUrl = "http://i.stpost.com/erez4/erez?src=Productimages/3576U_02.tif&tmp=MediumLargeG4&redirect=0&headers=proxy";

        protected override void OnCreate(Bundle bundle) {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.Main);

            mImage = FindViewById<ImageView>(Resource.Id.MyImage);
            mButton = FindViewById<Button>(Resource.Id.MyButton);

            mButton.Click += new EventHandler(mButton_Click);
        }

        void mButton_Click(object sender, EventArgs e) {
            ThreadPool.QueueUserWorkItem(o => AsyncImageLoad());
        }

        private Drawable GetDrawable(string url) {
            try {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                using (Bitmap bitmap = Android.Graphics.BitmapFactory.DecodeStream(response.GetResponseStream())) {
                    Drawable image = new BitmapDrawable(bitmap);
                    return image;
                }
            }
            catch (Exception e) {
                return null;
            }
        }

        private void AsyncImageLoad() {
            Drawable image = GetDrawable(mImageUrl);

            RunOnUiThread(() => {
                mImage.SetimageDrawable(image);
            });
        }
    }
}

解决方法:

这可能是我们的Stream映射代码中的一个错误,类似于:http://bugzilla.xamarin.com/show_bug.cgi?id=1054

这应该在下一个版本中修复(可能是1.9.x).

作为解决方法,尝试将response.GetResponseStream()复制到System.IO.MemoryStream中,然后将MemoryStream传递给BitmapFactory.DecodeStream().

更新

我有正确的想法,但错误的做法.而不是使用BitmapFactory.DecodeStream(),使用BitmapFactory.DecodeByteArray().以下代码适用于您的DrawableTest.zip应用程序:

private Drawable GetDrawable(string url)
{
    try {
        HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(url);
        using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
        using (Stream responseStream = response.GetResponseStream()) {
            MemoryStream workaround = new MemoryStream();
            responseStream.copyTo(workaround);

            Bitmap bitmap = Android.Graphics.BitmapFactory.DecodeByteArray (
                    workaround.GetBuffer (), 0, (int) workaround.Length);
            Drawable image = new BitmapDrawable(bitmap);
            return image;
        }
    }
    catch (Exception e) {
        Log.Error("DrawableTest", "Exception: " + e.Message);
        return null;
    }
}

请注意使用块以确保处置资源.

c# – On XNA to Mono Android Conversions:处理活动生命周期的简单(或最简单)方法是什么?

c# – On XNA to Mono Android Conversions:处理活动生命周期的简单(或最简单)方法是什么?

我是一名C#开发人员,负责转换为Mono Android.这些转换效果很好,除非手机超时或黑屏,用户再次触摸屏幕……游戏丢失.

处理这个问题最简单的方法是什么?我听说它被称为生命周期,并且发现了许多关于这个循环的简要描述,但没有解释如何使用实例来实现它,尤其是如何使用XNA转换实现它.

我的第一个解决方案是在XNA游戏中使用“暂停”方法,并为Android的“onPause”运行该方法.然而,可能有更简单的方法来解决这个问题,因为我听说有简单的单声道Android设置可供选择,可以自动处理超时和电话.

我问的是..如何让我的XnA转换继续通过电话,屏幕超时等运行?

解决方法:

我可能会问你是使用MonoGame还是仅仅是Mono for Android附带的AndroidGameView?

如果您使用的是AndroidGameView,我建议您遵循按照textured cube sample在OnLoad()中手动重新加载纹理的惯例.

使用MonoGame时,如果通过ContentManager.Load< Texture2D>()加载纹理,则会为您处理重新加载.必须在GraphicsDevice.DeviceReset事件中手动重新加载使用Texture2D.FromStream加载的纹理.

正如Andrew Russell指出的那样,ExEn的优势在于它不需要在每个简历上重新加载纹理.但是,仍然需要(或至少是良好实践)支持在Android上重新加载图形资源.在许多设备上,如果没有它,您的游戏将无法正常恢复切换. ExEn目前不支持重新加载纹理.

Xamarin目前正在AndroidGameView中使用fixing a bug,它将允许它正确地恢复设备支持它的位置.一旦发布,这应该流向MonoGame.

除了重新加载纹理和其他图形资源之外,处理生命周期应该是相当简单的. MonoGame还没有实现完整的Windows Phone生命周期(即墓碑和补水),但根据我的经验,没有必要.您可以将Game.Activated和Game.Deactivated事件用于在游戏中恢复时显示暂停屏幕等事项.

centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?

centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?

centos7 设置 mysql 自启动的配置文件中

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false

这里的

[Service]

User=mysql

Group=mysql,

user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?还是其他呢?

今天的关于mono 访问 oracle、mysqlmysql访问oracle数据库的分享已经结束,谢谢您的关注,如果想了解更多关于c# – Mono for Android,WebView输入字段filechooser不起作用、c# – Mono for Bit退出代码255,位于BitmapFactory.DecodeStream上、c# – On XNA to Mono Android Conversions:处理活动生命周期的简单(或最简单)方法是什么?、centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?的相关知识,请在本站进行查询。

本文标签: