如何将波斯语单词插入SQL Server数据库?

时间:2018-01-11 18:57:37

标签: c# character persian

我只是想知道如何将波斯语字符插入基于服务的数据库中?

当我保存数据时,它会显示'???'

我检查过这样的问题。但是,解决方案没有用。

    private void button1_Click(object sender, EventArgs e)
    {            
            objConnection.Open();

            if (ctypeCheckBox.Checked == true)                
                st = 1;          
            else if (ctypeCheckBox.Checked == false)                
                st = 0;

            string query = "INSERT INTO LectureTable(Cname, Cid, Ccredit, Csession, Ctype, CstartDate, CendDate, CstartTime, CendTime) VALUES('" + cnameTextBox.Text + "','" + cidTextBox.Text + "','" + ccreditTextBox.Text + "','" + csessionTextBox.Text + "','" + st + "', '" + cstartDateDateTimePicker.MinDate + "', '" + cendDateDateTimePicker.MaxDate + "', '" + cStartTimeBox.Text + "', '" + cEndTimeBox.Text + "')";
            SqlDataAdapter SDA = new SqlDataAdapter(query, objConnection);
            SDA.SelectCommand.ExecuteNonQuery();
            MessageBox.Show("Inserted!");

            objConnection.Close();
    }

2 个答案:

答案 0 :(得分:3)

两件事:

  1. 永远不要将查询字符串与值

    组合在一起
    "INSERT INTO LectureTable(Cname, Cid, Ccredit, Csession, Ctype, CstartDate, CendDate, CstartTime, CendTime) VALUES('" + cnameTextBox.Text + "','" + cidTextBox.Text + "','" + ccreditTextBox.Text + "','" + csessionTextBox.Text + "','" + st + "', '" + cstartDateDateTimePicker.MinDate + "', '" + cendDateDateTimePicker.MaxDate + "', '" + cStartTimeBox.Text + "', '" + cEndTimeBox.Text + "')";
    

    应立即替换为

    "INSERT INTO LectureTable(Cname, Cid, Ccredit, Csession, Ctype, CstartDate, CendDate, CstartTime, CendTime) 
    VALUES(@cname, @cid, @ccredit, @csession, @st, @cstartDateDate, @cendDate, @cStartTime, @cEndTimeB)";
    
  2. 然后你应该使用

    SDA.SelectCommand.Parameters.AddWithValue("cname",cnameTextBox.Text);
    

    所有参数。这样可以避免许多问题,包括SQL注入。

    1. 在数据库中,您的列应具有nvarchar数据类型。
    2. 祝你好运

答案 1 :(得分:0)

您应该使用SqlParameter。仅提供一个参数的示例。您可以以相同的方式添加其他参数。

 string query = "INSERT INTO LectureTable(Cname) VALUES(@name)";          

using(SqlCommand cmd = new SqlCommand(query, SqlConnection))
{ 

SqlParameter param = new SqlParameter("@name", cnameTextBox.Text);
param.SqlDbType = SqlDbType.String;
cmd.Parameters.Add(param);
.....
}