【发布时间】:2012-04-20 20:22:33
【问题描述】:
目前我正在为学校做一个项目,但我无法解决这个问题。
我有一个表单,如果您向其中插入英文字符,它可以正常工作,并且信息会插入到数据库中,但是如果我插入希伯来字符 (@form),则不会发生任何事情。
现在,澄清一下,我已经测试了 100%,即使我插入希伯来字符,它也会进入包含 sql 插入的“if”块。
整个项目由 Visual Studio Web Developer 2008 管理。
如果我手动插入希伯来语书写的值,数据库能够存储它们并输出,但是当尝试更新这些单元格 (@form) 时,希伯来语中的所有字符都会变成问号。
谁能帮帮我?我真的很感激。
谢谢,伙计
编辑:
这是我的插入查询:(错误是 List<string>,接下来是 MyAdoHelper.cs)
if (Errors.Count == 0)
{
string Add_Member = "INSERT INTO members (name, password, email, gender, registration_date) VALUES ('" + Nickname + "', '" + Password + "', '" + Email + "', '" + Gender + "', '" + DateTime.Now.ToString() + "')";
MyAdoHelper.DoQuery(GlobalVar.DatabaseName, Add_Member);
Errors.Add(GlobalVar.GlobalStatus["Register_Success"]);
}
MyAdoHelper.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();
}
}
【问题讨论】:
-
你能发布一个代码示例吗?没有代码很难进行故障排除。这可能是简单的事情,比如不使用参数化查询,以及导致冲突的意外字符(例如,无意的 sql 注入),所以最好排除这一点和其他简单的事情。
-
如果是 SQL 数据库,是否设置为使用希伯来语代码页?
-
如果您手动插入希伯来语值,它可以正常工作,并且您也可以显示它们,但是当我通过表单更新它们时,它会变为 ???,或者没有任何内容发送到数据库。在网站上显示希伯来语也可以。将其发送到数据库时出现问题,例如它不接受字符,并忽略我的请求。
标签: database visual-studio-2008 encode