2017-08-28 128 views
0

我有一个DataGridView,显示从我的SQL一个表,但它有一些blankspaces,你可以在这个截图中看到:删除空格从列在数据库

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; 

UPDATE 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

+0

标签您正在使用的数据库管理系统。 (例如,RTRIM是特定于产品的。) – jarlh

+3

我在此屏幕截图中看不到空白区域。 – Whencesoever

+0

@Whencesseverever E.g.在TransDocument和TransSeries之间有很多空格 –

回答

1

我需要改变我的charsvarchar,做这样的事情:

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

您正在使用char数据类型 - 这将创建一个列总是那个长度,所以通过做char(35)你说“创建一个35字符宽的列,即使我只放2个字符”。

您可能想要varchar这是一个可变字符长度字段。

+0

感谢您的建议,我会试试这个 –

+1

如果使用多语言数据库,请使用nvarchar。 – Amit

+0

我已更新我的问题,请检查它 –