从数据库中的列中删除空格

时间:2017-08-28 09:06:30

标签: c# sql

我有一个datagridview,它显示了我的sql中的一个表,但它有一些空白空间,你可以在这个截图中看到:

enter image description here

我想知道是否可以删除这些空格。我已经尝试过了:

SqlCommand objcmd1 = new SqlCommand("UPDATE dbo.UXMenu SET TransDocument = 
RTRIM(TransDocument) WHERE Estado = 0", myConnection);
objcmd1.ExecuteNonQuery();

但不是删除空格而是删除整行。

以下是我在datagridview中显示数据的代码,如果您想了解有关代码的更多详细信息,请随时询问。

InitializeComponent();
SqlConnection myConnection = new SqlConnection(@"Data source = ****;Database=****; User Id=****; Password=****");
myConnection.Open();
SqlCommand objcmd = new SqlCommand("SELECT TransDocument, TransSerial, 
TransDocNumber, PartyName, PartyLocalityID, TotalAmount, ShipToPostalCode FROM dbo.UXMenu WHERE Estado = 0", myConnection);
objcmd.ExecuteNonQuery();
SqlDataAdapter adp = new SqlDataAdapter(objcmd);
DataTable dt = new DataTable();
adp.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.AutoSizeColumnsMode = 
DataGridViewAutoSizeColumnsMode.DisplayedCells;

更新1:

我添加了用于创建表格的代码

SqlCommand command = new SqlCommand("IF OBJECT_ID('UXMenu', 'U') IS NULL CREATE TABLE UXMenu(TransDocument char(5), TransSerial char(5), TransDocNumber float  PRIMARY KEY, PartyName char(60), PartyLocalityID char(5), TotalAmount char (25), ShipToPostalCode char(35), Estado int);", myConnection);

更新2:

添加了创建文本文件的代码

if (dataGridViewEnviarDados.SelectedRows.Count > 0)
{
 foreach (DataGridViewRow r in dataGridViewEnviarDados.SelectedRows)
  {
   var transactionHandler = new TransactionHandler();
   FileInfo arquivo = new FileInfo(@"C:\Users\HP8200\Desktop\faturas\" + r.Cells[0].Value.ToString() + r.Cells[1].Value.ToString() + r.Cells[2].Value.ToString() + ".txt");                    
     using (TextWriter tw = new StreamWriter(arquivo.FullName, false, Encoding.Default))
    {
      foreach (DataGridViewColumn c in dataGridViewEnviarDados.Columns)
    {
     tw.Write(r.Cells[c.Name].Value.ToString() + ";");
    }
    tw.Close();
  }
 }
}

更新3:

将我的代码更改为:

SqlCommand command = new SqlCommand("IF OBJECT_ID('UXMenu', 'U') IS NULL CREATE TABLE UXMenu(TransDocument varchar(5), TransSerial varchar(5), TransDocNumber float  PRIMARY KEY, PartyName varchar(60), PartyLocalityID varchar(5), TotalAmount varchar(25), ShipToPostalCode varchar(35), Estado int);", conn);

现在我的桌子看起来像这样:

enter image description here

2 个答案:

答案 0 :(得分:2)

您正在使用char数据类型 - 这将创建始终该长度的列,因此通过执行char(35),您说“创建一个35列chars wide,即使我只放了2个字符“。

您可能希望varchar是一个可变字符长度字段。

答案 1 :(得分:1)

我需要将chars更改为varchar并执行以下操作:

SqlCommand command = new SqlCommand("IF OBJECT_ID('UXMenu', 'U') IS
 NULL CREATE TABLE UXMenu(TransDocument varchar(5), TransSerial
 varchar(5), TransDocNumber float  PRIMARY KEY, PartyName varchar(60),
 PartyLocalityID varchar(5), TotalAmount varchar(25), ShipToPostalCode
 varchar(35), Estado int);", conn);