MSSQL 将单词内带有随机空格的字符串插入到表中
本文关键字:插入 字符串 空格 单词内 随机 MSSQL | 更新日期: 2023-09-27 18:35:48
我有一个ASP支持应用程序,它从用户那里获取一个字符串并将其插入到表中,从而创建一条新记录。该字段为 VARCHAR(4000),以防有很长的 sql 命令或代码片段要记录。问题是,MSSQL 在这些字符串中放置了随机空格。在字符串中,我在调试程序时看到''r'字符,但随机单词中没有空格,就像我在数据库中看到的那样。我必须消除插入中的这些空格,并且还必须使用正确的空格和换行符从数据库中读取字符串。这是我的代码。字符串是"detay"字段。代码似乎很好,问题是 MSSQL 还是我的 sql 语句?变量是半土耳其语,如果您需要翻译,请询问,以便我进行编辑。
protected void btnkaydet_Click(object sender, EventArgs e)
{
if (txtbaslik.Text == "")
{
baslikErr.Text = "ERROR";
baslikErr.Visible = true;
}
else
{
baslikErr.Visible = false;
}
if (txtdetay.Text == "")
{
detayErr.Text = "ERROR";
detayErr.Visible = true;
}
else
{
detayErr.Visible = false;
}
if (txtdetay.Text != "" && txtbaslik.Text != "")
{
OdbcConnection baglanti = new OdbcConnection();
StringBuilder sorgu = new StringBuilder();
OdbcCommand komut = new OdbcCommand();
string veritabani = null;
veritabani = ;//cant give the db string for reasons :)
baglanti.ConnectionString = veritabani;
baglanti.Open();
veritabani = null;
komut = baglanti.CreateCommand();
if (string.IsNullOrEmpty(hdnFilename.Value))
{
sorgu.Append(" INSERT INTO DESTEK (baslik, detay, tarih) VALUES (?,?,?) ");
komut.CommandText = sorgu.ToString();
komut.Parameters.Add("@baslik", OdbcType.VarChar).Value = this.txtbaslik.Text;
komut.Parameters.Add("@detay", OdbcType.VarChar).Value = this.txtdetay.Text;
komut.Parameters.Add("@tarih", OdbcType.DateTime).Value = DateTime.Now.ToString();
}
else
{
sorgu.Append(" INSERT INTO DESTEK (baslik, detay, tarih, dosya) VALUES (?,?,?,?) ");
komut.CommandText = sorgu.ToString();
komut.Parameters.Add("@baslik", OdbcType.VarChar).Value = this.txtbaslik.Text;
komut.Parameters.Add("@detay", OdbcType.VarChar).Value = this.txtdetay.Text;
komut.Parameters.Add("@tarih", OdbcType.DateTime).Value = DateTime.Now.ToString();
komut.Parameters.Add("@dosya", OdbcType.VarChar).Value = hdnFilename.Value;
}
komut.ExecuteNonQuery();
komut = null;
baglanti.Close();
baglanti = null;
}
}
我已经找到了答案的解决方案。
string detay = this.txtdetay.Text;
detay = detay.Replace(@"'r'n", "");
detay = detay.Replace((char)13, '£');
detay = detay.Replace((char)10, '£');
detay = detay.Replace("£", "");
显然我不得不用空格替换转义字符。把它留在这里,以防其他人有同样的问题。