我有一个ASP支持应用程序,它从用户获取一个字符串并将其插入表中,创建一个新记录。如果要记录长sql命令或代码片段,则该字段为VARCHAR(4000)。问题是,MSSQL在这些字符串中放置了随机空格。在字符串中,我在调试程序时看到\ r \ n字符,但在随机单词中没有空格,就像我在数据库中看到的那样。我必须在插入中删除这些空格,并使用正确的空格和换行符从数据库中读取字符串。这是我的代码。该字符串是“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;
}
}
答案 0 :(得分:0)
我找到了答案的解决方案。
string detay = this.txtdetay.Text;
detay = detay.Replace(@"\r\n", "");
detay = detay.Replace((char)13, '£');
detay = detay.Replace((char)10, '£');
detay = detay.Replace("£", "");
显然我不得不用空格替换转义字符。留在这里,以防其他人有同样的问题。