Thursday, October 14, 2010

Nested If Statement in one line

class Program
{
static void Main(string[] args)
{
executeOneLineNestedIf();
}

static void executeOneLineNestedIf()
{
string string1 = null;
string string2 = null;
string string3 = "String 3";
string stringOut = String.IsNullOrEmpty(string1) ? (String.IsNullOrEmpty(string2) ? string3 : string2) : string1;
Console.WriteLine(stringOut);
Console.Read();
}
}

Tuesday, October 20, 2009

HTML 5 and SQL Lite Sample Code

Here is a sample code that uses sqllite to store data locally in the browser that supports HTML5.

make sure to set this on the page event: body onload="createDatabase()"

html code... i replaced all <> characters to [ and ]...

sql statements:[br /] [textarea cols=50 rows=3 id="txtSQLStatement"][/textarea] [br /] [input type="button" id="Button1" value="execute" onclick="clickExecuteQuery()" /] [br /] [div id="status"][/div] [br /]

javascripts code:

var sampledb;
function createDatabase(){
try {
if (!window.openDatabase) {
alert('works on HTML5 only');
} else {
var name = 'sampledb';
var version = '1.0';
var description = 'Sample Database';
var maxSize = 32768; // in bytes
sampledb = openDatabase(name, version, description, maxSize);
}
} catch(e) {
// Error handling code goes here.
alert("Unknown error "+e+".");
return;
}
}


function executeSQL(sqlStatement)
{
sampledb.transaction(
function (transaction) {
transaction.executeSql(sqlStatement, [], nullDataHandler, errorHandler);
}
);
}

function executeQuery(sqlStatement)
{
sampledb.transaction(
function (transaction) {
transaction.executeSql(sqlStatement, [], dataHandler, errorHandler);
}
);
}

function nullDataHandler(transaction, results)
{
var d = new Date();
updateTransactionStatus("last statement: " + document.getElementById("txtSQLStatement").value + " ran at " + d.toUTCString());
}

function errorHandler(transaction, error)
{
// Error is a human-readable string.
updateTransactionStatus(' Error Message '+error.message+' (Code '+error.code+')');
return false;
}

function dataHandler(transaction, results)
{
// Handle the results
var string = "
results
";
for (var i=0; i}

var d = new Date();
updateTransactionStatus("last statement: " + document.getElementById("txtSQLStatement").value + " ran at " + d.toUTCString() + "
" + string);
//updateTransactionStatus(string);
}

function clickExecuteQuery(){
executeQuery(document.getElementById("txtSQLStatement").value);

}

function updateTransactionStatus(message){
document.getElementById("status").innerHTML = message;

}

Sample Statements

Create table
CREATE TABLE [Employee]( [ID] [integer] NOT NULL PRIMARY KEY AUTOINCREMENT, [EmployeeID] [int] NULL, [FirstName] [varchar](20) NULL, [LastName] [varchar](20) NULL)

Delete a table
Drop table employee

Insert Records
Insert into employee (employeeid,firstname,lastname) values(1,'z','a');

Update Records
Update employee set firstname='zaldy'

Remove Records
Delete from employee where firstname='zaldy'

Read Records
Select ID, FirstName, LastName from employee

Tuesday, June 30, 2009

Call Web Service Function via Javascript using AJAX

The implementation of calling a web service function via javascript has become so tremendously easy with Microsoft’s AJAX components. That’s why I’m writing this blog for me to be reminded that I no longer have to worry of writing a special handler to manage the different implementations if the client is using IE or Firefox or Safari or Chrome. Everything is pretty much taken care of by the AJAX components. The beauty part of it also is I can use the dot notation to access the values in the returned objects.

First step is to create a web project in VS 2008 - Target framework: .NET 3.5

Add New Web Service Item

Configure the web service to allow a javascript call
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {

}

Inside the web service item, I created a custom struct as my data holder
public struct Note
{
public DateTime DateTimeStamp;
public string Comments;
}

I created a couple of functions (getDateStampedNote and getNotes)
[WebMethod]
[XmlInclude(typeof(Note))]
public Note getDateStampedNote(string comments)
{
if (comments == string.Empty)
throw new Exception("Exception: comments must not be empty.");

Note note;
note.DateTimeStamp = DateTime.Now;
note.Comments = comments;
return note;
}

[WebMethod]
[XmlInclude(typeof(Note))]
public ArrayList getNotes()
{
ArrayList ar = new ArrayList();
ar.Add(new Note
{
DateTimeStamp = DateTime.Now,
Comments = "First Note"
});

ar.Add(new Note
{
DateTimeStamp = DateTime.Now,
Comments = "Second Note"
});

ar.Add(new Note
{
DateTimeStamp = DateTime.Now,
Comments = "Third Note"
});

return ar;
}

Note: import XML serialization library in the web service.
using System.Xml.Serialization;

In default.aspx, I added a script manager and inside that I referenced the web service that I just created.




Same aspx file, I added a bunch of javascript functions (but reusable):
function dateStampMyComments()
{
//get comments value
var comments = document.getElementById("comments").value;
WebService.getDateStampedNote(comments,processResultSucess,processResultFailed,Object);
}

function getNotes()
{
WebService.getNotes(processResultGetNotes,processResultFailed,Object);
}

function processResultGetNotes(result)
{
for(index in result){
note = result[index];

document.getElementById("notes").innerHTML = document.getElementById("notes").innerHTML + "
" + note.Comments + " - " + note.DateTimeStamp;
}
}

function processResultSucess(result){
alert(result.DateTimeStamp + " - " + result.Comments );
}

function processResultFailed()
{
alert("Webservice Failed \n" + result._message);
}





Wednesday, February 4, 2009

Automatically mapping a user to a login in SQL Server

Automatically mapping a user to a login, creating a new login if it is required

The following example shows how to use Auto_Fix to map an existing user to a login of the same name, or to create the SQL Server login Mary that has the password B3r12-3x$098f6 if the login
Mary does not exist.

EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL;
GO


for more info, go to msdn website at:

http://msdn.microsoft.com/en-us/library/ms174378.aspx

Tuesday, September 30, 2008

Scripting the Creation and Deletion of a Replication in SQL Server

How to: Create a Push Subscription (Replication Transact-SQL Programming)
It seems like this is only available on SQL Server 2005 and possibly on 2008 as well. Unless, there is a plug-in for SQL Server 2000, which I doubt it.

To know more about the details on how-to create a push, click on the links below:
http://msdn.microsoft.com/en-us/library/ms146912(SQL.90).aspx
OR
http://msdn.microsoft.com/en-us/library/ms146912.aspx


How to: Delete a Push Subscription (Replication Transact-SQL Programming)
This is OK if you can live to have some residual information related to the subscription. But have no fear, there is a follow up SQL command that will do a clean up in the subscriber database, which will get rid of the unnecessary metadata. Even though the commands work on SQL Server 2000, I still prefer the manual process of deteting the subscription using Enterprise Manager because of the cleanliness that it can provide me.

For more info go to:
http://msdn.microsoft.com/en-us/library/ms146944(SQL.90).aspx
OR
http://msdn.microsoft.com/en-us/library/ms146944.aspx

adios!

Wednesday, September 24, 2008

Missing Assembly in GAC

I was getting this error when I try to run my App based on 3.5 framework – I found out that ADODB.dll and System.Core.dll were not registered in the Global Assembly Cache (GAC). For some reason, these two important DLLs did not register during the installation of .NET 3.5 framework.

Error Message:
Could not load file or assembly 'ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.


So, what I did is I got a copy of the missing ADODB.DLL and pasted it in the new server. I installed the ADODB assembly and that fixed my problem.


For the System.Core, I just simply registered it using the DLL file located at C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5 folder.

There are four ways to install an assembly into the global assembly cache:

1. Using the Global Assembly Cache tool (Gacutil.exe).

2. Using Microsoft Windows Installer 2.0.

3. Using a Windows shell extension provided by the Windows Software Development Kit (SDK) called the Assembly Cache Viewer (Shfusion.dll).

4. Using the .NET Framework Configuration Tool (Mscorcfg.msc).

My favorite procedure is using .NET Framework Configuration. It’s really easy.

For more information on how to install assembly into GAC, go to:

http://msdn.microsoft.com/en-us/library/dkkx7f79.aspx


Monday, August 11, 2008

Flag Project

My 3-year-old son has inspired me to build this application. The idea is really simple. The program will help me teach my son about different flags, countries and capitals in a very fun way. In addition to that, my son will be able to point out countries on the map and will encourage him to love geography which I have struggled :)

check it out at:

http://www.witoe.com