C# 如何在oracle数据库中存储unicode字符
我正在尝试将Unicode数据(印地语字符)存储在oracle数据库中,而不是存储在印地语字符中,它以这种格式存储 我使用的是Oracle10g,我已经将数据库字符集设置为AL32UTF8 我的表格脚本C# 如何在oracle数据库中存储unicode字符,c#,database,visual-studio,unicode,oracle10g,C#,Database,Visual Studio,Unicode,Oracle10g,我正在尝试将Unicode数据(印地语字符)存储在oracle数据库中,而不是存储在印地语字符中,它以这种格式存储 我使用的是Oracle10g,我已经将数据库字符集设置为AL32UTF8 我的表格脚本 create table UTF ( ENGLISH_NAME VARCHAR2(10), HINDI_NAME NVARCHAR2(10) ) 我正在使用VisualStudio13 我正在使用谷歌API进行翻译 <script> function OnLoad() {
create table UTF
(
ENGLISH_NAME VARCHAR2(10),
HINDI_NAME NVARCHAR2(10)
)
我正在使用VisualStudio13
我正在使用谷歌API进行翻译
<script>
function OnLoad() {
var options = {
sourceLanguage:
google.elements.transliteration.LanguageCode.ENGLISH,
destinationLanguage:
[google.elements.transliteration.LanguageCode.HINDI],
shortcutKey: 'ctrl+g',
transliterationEnabled: true
};
var control = new google.elements.transliteration.TransliterationControl(options);
control.makeTransliteratable(["txtHindi"]);
var keyVal = 32; // Space key
$("#txtEnglish").on('keydown', function (event) {
if (event.keyCode === 32) {
var engText = $("#txtEnglish").val() + " ";
var engTextArray = engText.split(" ");
$("#txtHindi").val($("#txtHindi").val() + engTextArray[engTextArray.length - 2]);
document.getElementById("txtHindi").focus();
$("#txtHindi").trigger({
type: 'keypress', keyCode: keyVal, which: keyVal, charCode: keyVal
});
}
});
$("#txtHindi").bind("keyup", function (event) {
setTimeout(function () { $("#txtEnglish").val($("#txtEnglish").val() + " "); document.getElementById("txtEnglish").focus() }, 0);
});
} //end onLoad function
google.setOnLoadCallback(OnLoad);
将您的
查询更改为此(请勿更改,此部分仅用于知识目的):
您需要使用字母N作为Unicode字符串常量的前缀。如果没有字母N前缀,字符串将转换为数据库的默认代码页。此默认代码页可能无法识别某些字符
但是
(你需要做的实际部分)
使用参数化SQL查询
将您的查询更改为此(请勿更改,此部分仅用于知识目的):
您需要使用字母N作为Unicode字符串常量的前缀。如果没有字母N前缀,字符串将转换为数据库的默认代码页。此默认代码页可能无法识别某些字符
但是
(你需要做的实际部分)
使用参数化SQL查询
我们可以看到你的插入代码吗?我正在使用谷歌API进行英语到印地语的转换。你有一些代码是为了将数据输入数据库而编写的吗?我对此并不熟悉,你能在实际插入行时显示部分吗,你的sql查询?你需要这个,如果没有:--您将需要Oracle本机客户端,并且必须设置连接。你熟悉TSNNames.ora吗?我们可以看看你的insert
代码吗?我正在使用谷歌API进行英语到印地语的转换。你有一些你编写的代码来将数据输入数据库吗?我对此并不熟悉,你能不能在你实际插入行时显示部分,你的sql查询?你需要这个,如果没有:--您将需要Oracle本机客户端,并且必须设置连接。您熟悉TSNNames.ora吗?它不支持命名参数“OleDB无法识别命名参数,但它显然能够识别您试图传递的命名参数,因此您可以充分利用它,并使SQL具有语义,更易于理解。只要它们以相同的顺序传递,它将接受一个变量作为命名参数。“,ref:,并且不支持命名参数”OleDB不识别命名参数,但它显然识别您试图传递命名参数,因此,您可以充分利用这一点,并使SQL具有语义,更易于理解。只要它们以相同的顺序传递,它就会接受一个变量作为命名参数。“,ref:。
public int insert(person d)
{
String Query;
string ConnStr = new ConnectionClass().ConnStr();
using (OleDbConnection conn = new OleDbConnection(ConnStr))
{
Query = "insert into UTF(ENGLISH_NAME, HINDI_NAME) VALUES('" + d.ENGLISH_NAME + "','" + d.HINDI_NAME + "')";
OleDbCommand cmd = new OleDbCommand(Query, conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
return 1;
}
Query = "insert into UTF(ENGLISH_NAME, HINDI_NAME) VALUES('" + d.ENGLISH_NAME + "',N'" + d.HINDI_NAME + "')";
Query = "insert into UTF(ENGLISH_NAME, HINDI_NAME) VALUES( @ENGLISH_NAME, @HINDI_NAME)";
cmd.Parameters.Add(new OleDbParameter("@ENGLISH_NAME",d.ENGLISH_NAME));
cmd.Parameters.Add(new OleDbParameter("@HINDI_NAME",d.HINDI_NAME));