Table of contents

  1. Creating a database programmatically in SQL Server
  2. Connect to SQL Server database from a docker container
  3. Creating Folders programmatically in SharePoint
  4. Watch for a table new records in sql database

Creating a database programmatically in SQL Server

To create a database programmatically in SQL Server using C#, you can use the SqlConnection class from the System.Data.SqlClient namespace. Here's an example of how you can achieve this:

using System;
using System.Data.SqlClient;

public class Program
{
    static void Main()
    {
        string connectionString = "Data Source=(local);Initial Catalog=master;Integrated Security=True";

        // Create a new database
        CreateDatabase(connectionString, "YourDatabaseName");

        Console.WriteLine("Database created successfully.");
    }

    static void CreateDatabase(string connectionString, string databaseName)
    {
        // Create a connection to the master database
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            // Open the connection
            connection.Open();

            // Create the SQL command to create the database
            string createDatabaseQuery = $"CREATE DATABASE [{databaseName}]";

            // Execute the command
            using (SqlCommand command = new SqlCommand(createDatabaseQuery, connection))
            {
                command.ExecuteNonQuery();
            }
        }
    }
}

In this example, you need to provide the connection string to the SQL Server instance. Make sure to update the connectionString variable with the appropriate values for your SQL Server instance.

The CreateDatabase method takes the connection string and the desired database name as parameters. It establishes a connection to the master database and executes a SQL command to create a new database with the specified name.

After executing the command, the connection is closed, and you will see a "Database created successfully" message in the console.

Make sure the user account used in the connection string has sufficient permissions to create databases on the SQL Server instance.

Note: It's important to exercise caution and validate user inputs when creating databases programmatically to prevent SQL injection attacks. Ensure that you validate and sanitize any user-provided input before using it in SQL queries.


Connect to SQL Server database from a docker container

To connect to a SQL Server database from a Docker container, you can use the microsoft/mssql-server-linux image as a base image for your container, and then configure the necessary connection settings in your application code.

Here's an example of how to create a Docker container that connects to a SQL Server database:

  • Create a Dockerfile with the following content:
FROM microsoft/mssql-server-linux

ENV SA_PASSWORD=MyP@ssword123
ENV ACCEPT_EULA=Y

COPY MyDatabase.sql /var/opt/mssql/data/

EXPOSE 1433

In this Dockerfile, we're using the microsoft/mssql-server-linux image as our base image, and setting the SA_PASSWORD environment variable to a strong password. We're also copying a SQL script file named MyDatabase.sql to the /var/opt/mssql/data/ directory in the container, which will be used to create the database.

  • Build the Docker image:
docker build -t myimage .

In this example, we're tagging the image with the name myimage.

  • Run the Docker container:
docker run -d -p 1433:1433 --name mycontainer myimage

In this example, we're mapping port 1433 in the container to port 1433 on the host machine, and naming the container mycontainer.

  • Connect to the database from your application code:
using System.Data.SqlClient;

string connectionString = "Server=localhost,1433;Database=MyDatabase;User Id=sa;Password=MyP@ssword123;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Do something with the database connection
}

In this example, we're using the SqlConnection class to connect to the database using the localhost server name, port 1433, and the sa user with the password MyP@ssword123. Replace MyDatabase with the name of the database you want to connect to.

Note that you may need to modify the connection string to match the configuration of your SQL Server instance, including the server name, port, and authentication settings.


Creating Folders programmatically in SharePoint

In SharePoint, you can create folders programmatically using the SharePoint Object Model. Here's an example code snippet that demonstrates how to create a folder in a SharePoint list or library:

using (SPSite site = new SPSite("http://yoursharepointsite"))
{
    using (SPWeb web = site.OpenWeb())
    {
        // Get the list or library where you want to create the folder
        SPList list = web.Lists["Your List Name"];

        // Create a new folder
        string folderName = "New Folder";
        SPListItem folder = list.Items.Add(list.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, folderName);
        folder.Update();

        // Optionally, set properties of the new folder
        folder["Title"] = "New Folder Title";
        folder["Description"] = "New Folder Description";
        folder.Update();
    }
}

In this example, the SPSite and SPWeb objects are used to open the SharePoint site and web where the list or library is located. The SPList object is then used to get the list or library, and the Items property is used to get the collection of items in the list or library. The Add method is used to create a new folder in the root folder of the list or library, and the Update method is called to save the changes.

Optionally, you can set properties of the new folder by accessing its properties using the indexer (e.g., folder["Title"] = "New Folder Title"), and then calling the Update method again to save the changes.

Note that this code snippet creates a folder in the root folder of the list or library. To create a folder in a subfolder, you need to specify the server-relative URL of the subfolder as the first parameter of the Add method. For example:

// Create a new folder in a subfolder
string folderName = "New Folder";
string subfolderUrl = list.RootFolder.ServerRelativeUrl + "/Subfolder";
SPListItem folder = list.Items.Add(subfolderUrl, SPFileSystemObjectType.Folder, folderName);

This code snippet creates a new folder named "New Folder" in a subfolder named "Subfolder" of the root folder of the list or library.


Watch for a table new records in sql database

To watch for new records in a SQL database table, you can use triggers or polling. Here are the steps for each method:

  1. Using Triggers: a. Create a trigger on the table that you want to monitor for new records. The trigger should execute a stored procedure that sends a notification or performs some other action. b. In the stored procedure, you can use various methods to send a notification or perform an action, such as sending an email, inserting a record into another table, or calling a web service.

    For example, you can create a trigger like this:

    CREATE TRIGGER [dbo].[NewRecordTrigger] 
    ON [dbo].[MyTable]
    AFTER INSERT
    AS
    BEGIN
        EXEC [dbo].[NotifyNewRecord]
    END
    

    And in the stored procedure, you can send an email notification like this:

    CREATE PROCEDURE [dbo].[NotifyNewRecord]
    AS
    BEGIN
        DECLARE @msg NVARCHAR(200) = 'A new record was inserted into MyTable'
        EXEC msdb.dbo.sp_send_dbmail
            @profile_name = 'MyMailProfile',
            @recipients = '[email protected]',
            @subject = 'New Record Notification',
            @body = @msg
    END
    
  2. Using Polling: a. Create a Windows Service or Console Application that periodically polls the table for new records using a SELECT statement with a filter on the insertion date or a unique identifier column. b. When new records are found, perform an action such as sending a notification or inserting the record into another table.

    For example, you can create a C# console application like this:

    using System;
    using System.Data.SqlClient;
    
    class Program
    {
        static void Main(string[] args)
        {
            var connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;";
            var selectQuery = "SELECT * FROM MyTable WHERE InsertionDate > @LastPollTime";
            var lastPollTime = DateTime.MinValue;
            
            while (true)
            {
                using (var connection = new SqlConnection(connectionString))
                using (var command = new SqlCommand(selectQuery, connection))
                {
                    command.Parameters.AddWithValue("@LastPollTime", lastPollTime);
                    connection.Open();
                    var reader = command.ExecuteReader();
                    
                    while (reader.Read())
                    {
                        // Perform action for new record
                        Console.WriteLine("New record found: " + reader["Id"]);
                    }
                    
                    reader.Close();
                    lastPollTime = DateTime.Now;
                    System.Threading.Thread.Sleep(10000); // Wait for 10 seconds before polling again
                }
            }
        }
    }
    

    This application polls the MyTable table for new records every 10 seconds and prints a message for each new record found. You can modify it to perform any action you like.


More Python Questions

More C# Questions