如何将波斯语单词插入 SQL 服务器数据库?

How to insert Persian words into a SQL Server database?

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

当我保存我的数据时,它显示类似 '???'

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

    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();
    }

两件事:

  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)";
    

然后你应该使用

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

所有参数。这将使您避免很多问题,包括 SQL 注入。

  1. 在数据库中,您的列应具有 nvarchar 数据类型。

祝你好运

你应该使用SqlParameter。仅举一个例子parameter.You可以用同样的方式添加其他人。

 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);
.....
}