各位如何解决阿,在oracle中插入每问题,用c#操作就乱麻

解决方案 »

  1.   

    这是代码 OracleConnection conn = new OracleConnection();
                conn.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=v12)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));User Id=system;Password=1234";
                try
                {
                    conn.Open();
                    OracleCommand cmd = conn.CreateCommand();
    string sql = "insert into YANGFANGDATABASE(invest,name) values('看看','张三')"
    cmd.CommandText = sql;
                    int num = cmd.ExecuteNonQuery();
                    if (num > 0)
                    {
                        MessageBox.Show("添加成功");
                    }
                    else
                    {
                        MessageBox.Show("添加失败");
                    }
                }
                catch (Exception ee)
                {
                    MessageBox.Show("错误"+ee.Message);
                }
                finally
                {
                    conn.Close();
                }
      

  2.   

    把字符该为unicode,应该不会乱
      

  3.   

    参考
    http://www.2cto.com/kf/201207/138980.html
      

  4.   

    oracle客户端软件的字符编码与服务器端的字符编码不一致造成的。oracle服务端字符编码为: ZHS16GBK
    oracle客户端字符编码为:  WE8ISO8859P1解决办法有三种:
    (1)修改客户端注册表: 找到Oracle安装注册项下的NLS_LANG,将其值改为"SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    (2)通过调用_putenv函数,在程序中用代码设置:
    using System.Runtime.InteropServices;
    ...
    [DllImport("msvcrt.dll")]
    private static extern int _putenv(string str);
    ...
    _putenv("NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK");
    //数据库操作
    _putenv("NLS_LANG = AMERICAN_AMRICA.WE8ISO8859P1");
    (3)通过C#自带的函数设置环境变量
    System.Environment.SetEnvironmentVarible("NLS_LANG "," SIMPLIFIED CHINESE_CHINA.ZHS16GBK");
    //数据库操作
    System.Environment.SetEnvironmentVarible("NLS_LANG ","AMERICAN_AMRICA.WE8ISO8859P1");需要注意的是: 第二、三种利用函数进行设置环境变量的操作必须在数据库操作的外边才能生效。