简体   繁体   English

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

[英]Erasing blank spaces from columns in a database

I have a datagridview that shows one table from my sql but it has some blankspaces as you can see in this screenshot: 我有一个datagridview,它显示了我的sql中的一个表,但是它有一些空格,如下面的屏幕快照所示:

在此处输入图片说明

And I was wondering if it's possible to remove those blank spaces. 我想知道是否有可能删除这些空格。 I have already tried this: 我已经尝试过了:

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

But instead of removing the blank spaces it removes the entire row. 但是,它不会删除空白,而是会删除整行。

Here is my code for display the data in the datagridview, if you want more details about the code feel free to ask. 这是我的代码,用于在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;

UPDATE 1: 更新1:

I added the code that I use to create the table 我添加了用于创建表的代码

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

UPDATE 2: 更新2:

Added the code that creates the textfile 添加了创建文本文件的代码

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

UPDATE 3: 更新3:

Changed my code to this: 将我的代码更改为此:

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

And now my table look like this: 现在我的桌子看起来像这样:

在此处输入图片说明

You are using char datatype - this will create a column that is always that length, so by doing char(35) you are saying "create me a column that is 35 chars wide, even if i only put 2 characters in it". 您正在使用char数据类型-这将创建一个始终保持该长度的列,因此,通过执行char(35)您会说“即使我仅输入2个字符,也要创建一个35个字符宽的列”。

You probably want varchar which is a variable character length field. 您可能需要varchar ,这是一个可变字符长度字段。

I needed to change my chars to varchar and did something like this: 我需要将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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM