Database C#ASP.NET(VS 2008)数据库如果包含希伯来文字符,则会忽略INSERT
目前我正在为学校做一个项目,我无法解决这个问题 我有一个表单,如果你在表单中插入英文字符,它可以正常工作,并且信息会被插入数据库,但是如果我插入希伯来文字符(@form),什么都不会发生 现在,为了澄清,我已经测试了100%,即使我插入希伯来文字符,它也会进入包含sql插入的“if”块 整个项目由VisualStudioWebDeveloper2008管理 如果我手动插入希伯来文写的值,DB可以存储并输出这些值,但是当尝试更新这些单元格(@form)时,希伯来文中的所有字符都会变成问号 有人能帮我吗?我会非常感激的 谢谢,伙计 编辑: 这是我的插入查询:(错误是一个Database C#ASP.NET(VS 2008)数据库如果包含希伯来文字符,则会忽略INSERT,database,visual-studio-2008,encode,Database,Visual Studio 2008,Encode,目前我正在为学校做一个项目,我无法解决这个问题 我有一个表单,如果你在表单中插入英文字符,它可以正常工作,并且信息会被插入数据库,但是如果我插入希伯来文字符(@form),什么都不会发生 现在,为了澄清,我已经测试了100%,即使我插入希伯来文字符,它也会进入包含sql插入的“if”块 整个项目由VisualStudioWebDeveloper2008管理 如果我手动插入希伯来文写的值,DB可以存储并输出这些值,但是当尝试更新这些单元格(@form)时,希伯来文中的所有字符都会变成问号 有人能帮
列表
,接下来是myadoheloper.cs)
myadoheloper.cs:
public class MyAdoHelper
{
public MyAdoHelper()
{
}
public static SqlConnection ConnectToDb(string fileName)
{
string path = @"C:\Users\Guy\Desktop\Project\App_Data\";
path += fileName;
string connString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" +
path +
";Integrated Security=True;User Instance=True";
SqlConnection conn = new SqlConnection(connString);
return conn;
}
public static void DoQuery(string fileName, string sql)
{
SqlConnection conn = ConnectToDb(fileName);
conn.Open();
SqlCommand com = new SqlCommand(sql, conn);
com.ExecuteNonQuery();
com.Dispose();
conn.Close();
}
public static int RowsAffected(string fileName, string sql)
{
SqlConnection conn = ConnectToDb(fileName);
conn.Open();
SqlCommand com = new SqlCommand(sql, conn);
int rowsA = com.ExecuteNonQuery();
conn.Close();
return rowsA;
}
public static bool IsExist(string fileName, string sql)
{
SqlConnection conn = ConnectToDb(fileName);
conn.Open();
SqlCommand com = new SqlCommand(sql, conn);
SqlDataReader data = com.ExecuteReader();
bool found;
found = (bool)data.Read();
conn.Close();
return found;
}
public static DataTable ExecuteDataTable(string fileName, string sql)
{
SqlConnection conn = ConnectToDb(fileName);
conn.Open();
SqlDataAdapter tableAdapter = new SqlDataAdapter(sql, conn);
DataTable dt = new DataTable();
tableAdapter.Fill(dt);
return dt;
}
public static void ExecuteNonQuery(string fileName, string sql)
{
SqlConnection conn = ConnectToDb(fileName);
conn.Open();
SqlCommand command = new SqlCommand(sql, conn);
command.ExecuteNonQuery();
conn.Close();
}
public static int CountTableRows(string TableName)
{
SqlConnection Conn = MyAdoHelper.ConnectToDb(GlobalVar.DatabaseName);
Conn.Open();
string TotalRows = "SELECT COUNT(*) FROM " + TableName;
SqlCommand Cmd = new SqlCommand(TotalRows, Conn);
return (int)Cmd.ExecuteScalar();
}
}
我想,您在数据库中使用了nvarchars for hebrew characters字段…如果您使用的是microsoft sql server,请尝试类似的方法
INSERT INTO tabelle (Spalte) VALUES (N'äüö');
还要确保您使用了
nvarchar
您能发布代码示例吗?没有代码的情况下进行故障排除有点困难。它可能很简单,比如不使用参数化查询,以及导致冲突的意外字符(例如,无意的sql注入),因此最好将其和其他简单的事情排除在外。如果是sql数据库,它是否设置为使用希伯来代码页?如果手动插入希伯来值,它工作正常,您也可以显示它们,但是当我通过表单更新它们时,它会变成???,或者不会向数据库发送任何内容。在网站上显示希伯来语也很有效。将其发送到数据库时出现问题,例如它不接受字符,并忽略我的请求。是的,这是导致问题的原因吗?谢谢你的帮助。我确实使用了nvarchar,(Splate)在做什么?我已经尝试了你的解决方案,但它仍然没有插入希伯来语值。这只是一个例子。如果插入值,请使用N'value'。N将帮助您;)哈哈,刚刚翻译过来,现在我明白了:)我现在就试试
INSERT INTO tabelle (Spalte) VALUES (N'äüö');