Link to home
Start Free TrialLog in
Avatar of saloj
salojFlag for Canada

asked on

StringBuilder.AppendFormat

Hi EE,
how can I write the following code in StringBuilder.AppendFormat.
what is the advantage to use Stringbuilder.AppendFormat insted of string concatenation.

     SQL = "INSERT INTO tblLog"
        SQL += "(ACCOUNT,IP_ADDRESS,USER_AGENT,REFERER,LOGIN_DATE,LOGIN_RESULT_TYPE)"
        SQL += " values"
        SQL += "(N'" & LCase(Trim(UserAccount)) & "',"
        SQL += "'" & UserIp & "',"
        SQL += "'" & UserAgent & "',"
        SQL += "'" & UserReferer & "',"
        SQL += "getdate(),"
        SQL += "'" & result & "'"
        SQL += ")"
Avatar of appari
appari
Flag of India image

try this

dim SQL  As New StringBuilder()

SQL.append "INSERT INTO tblLog"
SQL.append "(ACCOUNT,IP_ADDRESS,USER_AGENT,REFERER,LOGIN_DATE,LOGIN_RESULT_TYPE)"
SQL.append " values"
SQL.append "(N'" & LCase(Trim(UserAccount)) & "',"
SQL.append  "'" & UserIp & "',"
SQL.append  "'" & UserAgent & "',"
SQL.append  "'" & UserReferer & "',"
SQL.append  "getdate(),"
SQL.append  "'" & result & "'"
SQL.append  ")"

ASKER CERTIFIED SOLUTION
Avatar of appari
appari
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
saloj,  
StringBuilder is faster for excessive string manipulation.
it uses parameters like tokens, which is easy to  understand.
http://msdn.microsoft.com/en-us/library/hdekwk0b.aspx

String concatenation is very confusing when ur using for subqueries or longer strings with paramteres.

thanks,
This is a lil more concise:

StringBuilder sb = new StringBuilder();

sb.Append("INSERT INTO tblLog (ACCOUNT,IP_ADDRESS,USER_AGENT,REFERER,LOGIN_DATE,LOGIN_RESULT_TYPE)");

sb.AppendFormat(" values (N'{0}', '{1}', '{2}', '{3}', getdate(), '{4}')"
                UserAccount.Trim().ToLower(), UserIp, UserAgent, UserReferer, result);

Sorry, could not convert to vb.net.

Arun
Here's is a post from this morning about this issue:

https://www.experts-exchange.com/questions/26299354/When-to-use-string-format.html

Arun
I finally got the VB version:

Dim sb As New StringBuilder()
sb.Append("INSERT INTO tblLog (ACCOUNT,IP_ADDRESS,USER_AGENT,REFERER,LOGIN_DATE,LOGIN_RESULT_TYPE)")
sb.AppendFormat(" values (N'{0}', '{1}', '{2}', '{3}', getdate(), '{4}')", UserAccount.Trim().ToLower(), UserIp, UserAgent, UserReferer, result)

Arun
Avatar of saloj

ASKER

Hi Guys, Thanks
i am trying to do following but getting exception error. pls help

 SQLBD.Append("INSERT INTO tblLog(ACCOUNT,IP_ADDRESS,USER_AGENT,REFERER,LOGIN_DATE,LOGIN_RESULT_TYPE)")
        SQLBD.AppendFormat(" values")
        SQLBD.AppendFormat("(N'{0}',", LCase(EF.Text_To_Msdb(Trim(UserAccount))))
        SQLBD.AppendFormat("'{1}',", UserIp)
        SQLBD.AppendFormat("'{2}',", UserAgent)
        SQLBD.AppendFormat("'{3}',", UserReferer)
        SQLBD.AppendFormat("getdate(),")
        SQLBD.AppendFormat("'{4}')", result(0))

Thanks
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
change it like this paramter index number starts from 0, if you combine all the lines to one appendformat then use {0},{1}...

try this

 SQLBD.Append("INSERT INTO tblLog(ACCOUNT,IP_ADDRESS,USER_AGENT,REFERER,LOGIN_DATE,LOGIN_RESULT_TYPE)")
        SQLBD.AppendFormat(" values")
        SQLBD.AppendFormat("(N'{0}',", LCase(EF.Text_To_Msdb(Trim(UserAccount))))
        SQLBD.AppendFormat("'{0}',", UserIp)
        SQLBD.AppendFormat("'{0}',", UserAgent)
        SQLBD.AppendFormat("'{0}',", UserReferer)
        SQLBD.AppendFormat("getdate(),")
        SQLBD.AppendFormat("'{0}')", result(0))

or this

SQLBD.Append("INSERT INTO tblLog(ACCOUNT,IP_ADDRESS,USER_AGENT,REFERER,LOGIN_DATE,LOGIN_RESULT_TYPE)")
        SQLBD.AppendFormat(" values")
        SQLBD.AppendFormat("(N'{0}','{1}','{2}','{3}', getDate(), '{4}')", LCase(EF.Text_To_Msdb(Trim(UserAccount))), UserIp, UserAgent, UserReferer, result(0))
Avatar of Shahan Ayyub
what exception did you get ??
See the value of 'SQLBD.ToString()' in watch window it should look like your normal query.