Save Datatable Information Into Database
This Post will explain How we can save Datatable or Data Set information to Data base. I tried to explain this in detail,but a primary knowledge on C#,Xml,Sql is required.
Steps as follows.
- Save Data to a datatable
- insert Datatable into a dataset
- Convert the dataset into XmlString
- Send this Xml string to a StoredProcedure Which will parse the Xml and Save the data into DataBase.
Creating a Table:
Create table Student{
Name varachar2(50),
Address varachar2(50),
Phone varachar2(50),
}
Data Table Creation And DataSet:
public static DataSet GetDataSetInfo()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable(“Sample”);
dt.Columns.Add(“Name”, Type.GetType(“System.String”));
dt.Columns.Add(“Address”, Type.GetType(“System.String”));
dt.Columns.Add(“Phone”, Type.GetType(“System.String”));
DataRow dr = dt.NewRow();
dr[“Name”] = “Srinivas”;
dr[“Address”] = “Banglore”;
dr[“Phone”] = “+91-9999912345”;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[“Name”] = “Ravi”;
dr[“Address”] = “Mumbai”;
dr[“Phone “] = “+91-9888894444”;
dt.Rows.Add(dr);
ds.Tables.Add(dt);
return ds ;
}
Convert Dataset Into Xml String:
public static string DataSetToXMLString(DataTable dt)
{
DataSet ds = new DataSet();
string XMLformat;
try
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
ds.Merge(dt, true, MissingSchemaAction.AddWithKey);
ds.Tables[0].TableName = “SampleTable”;
foreach (DataColumn column in ds.Tables[0].Columns)
{
column.ColumnMapping = MappingType.Attribute;
}
ds.WriteXml(sw, XmlWriteMode.WriteSchema);
XMLformat = sb.ToString();
return XMLformat;
}
catch (Exception Exception)
{
throw Exception;
}
}
The Main Method:
static void Main(string[] args)
{
DataSet ds = GetDataSet();
String xmlData = DataSetToXMLString(ds.Tables[0]);
SqlConnection conn = new SqlConnection
(“Data Source=.;Initial Catalog=DBName;Integrated Security=SSPI;”);
SqlCommand command = new SqlCommand
(“InsertData ‘” + xmlData + “‘”, conn);
conn.Open();
command.ExecuteNonQuery();
conn.Close();
}
Stored Procedure:
This is very Important as it parses the xml String And Save into Database.
CREATE PROCEDURE InsertData (@xmlString VARCHAR(MAX)) AS BEGIN DECLARE @xmlHandle INT DECLARE @dummyTable TABLE ( [Name] VARCHAR(50), [Address] VARCHAR(50), [Phone] VARCHAR(50) )
EXEC sp_xml_preparedocument @xmlHandle output, @xmlString
INSERT INTO @dummyTable SELECT [Name] ,[Address],[Phone] FROM OPENXML (@xmlHandle, ‘/NewDataSet/SampleDataTable’,1) WITH ( [Name] varchar(50) ‘@Name’, [Address] varchar(50) ‘@Address’, [Phone] varchar(50) ‘@Phone’ ) INSERT INTO SampleData ([Name],[Address], [Phone]) (SELECT [Name] ,[Address],[Phone] FROM @dummyTable) EXEC sp_xml_removedocument @xmlHandle END
If you have any doubts feel free to contact me..