unicode 如何存入oracle,c# – 如何将unicode数据保存到oracle?

我想在oracle数据库(10 g)中保存unicode数据(希腊语).我创建了一个简单的表:

我知道NVARCHAR2总是使用UTF-16编码,所以它必须适用于所有(人类)语言.

然后我试图在数据库中插入一个字符串.我在代码中硬编码了字符串(“你好吗?”).然后我尝试从数据库中恢复并显示它.

class Program

{

static string connectionString = "";

static void Main (string[] args) {

string textBefore = "Τι κάνεις;";

DeleteAll ();

SaveToDatabase (textBefore);

string textAfter = GetFromDatabase ();

string beforeData = String.Format ("Before: {0}, ({1})", textBefore, ToHex (textBefore));

string afterData = String.Format ("After: {0}, ({1})", textAfter, ToHex (textAfter));

Console.WriteLine (beforeData);

Console.WriteLine (afterData);

MessageBox.Show (beforeData);

MessageBox.Show (afterData);

Console.ReadLine ();

}

static void DeleteAll () {

using (var oraConnection = new OracleConnection (connectionString)) {

oraConnection.Open ();

var command = oraConnection.CreateCommand ();

command.CommandText = "delete from UNICODEDATA";

command.ExecuteNonQuery ();

}

}

static void SaveToDatabase (string stringToSave) {

using (var oraConnection = new OracleConnection (connectionString)) {

oraConnection.Open ();

var command = oraConnection.CreateCommand ();

command.CommandText = "INSERT into UNICODEDATA (ID, UNICODESTRING) Values (11, :UnicodeString)";

command.Parameters.Add (":UnicodeString", stringToSave);

command.ExecuteNonQuery ();

}

}

static string GetFromDatabase () {

using (var oraConnection = new OracleConnection (connectionString)) {

oraConnection.Open ();

var command = oraConnection.CreateCommand ();

command.CommandText = "Select * from UNICODEDATA";

var erpReader = command.ExecuteReader ();

string s = String.Empty;

while (erpReader.Read ()) {

string text = erpReader.GetString (1);

s += text + ", ";

}

return s;

}

}

static string ToHex (string input) {

string bytes = String.Empty;

foreach (var c in input)

bytes += ((int)c).ToString ("X4") + " ";

return bytes;

}

}

以下是不同的输出:

请问你能告诉我这里可能做错了什么吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值