How to add Application name to <appSettings/>? - vb.net

This is my app.config file looks like:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Application Name" value="/MyApplication" />
</appSettings>
<connectionStrings>
<add name="frmStartup.My.MySettings.HDIMembershipProviderConnectionString"
connectionString="Data Source=.\sqlexpress;Initial Catalog=HDIMembershipProvider;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<membership defaultProvider="HDIMembershipProvider">
<providers>
<clear/>
<add name="HDIMembershipProvider" type="MyApplication.HDIMembershipProvider, MyApplication"/>
</providers>
</membership>
</system.web>
<system.diagnostics>
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Uncomment the below section to write to the Application Event Log -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"/>
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
</configuration>
I am trying to use HDI membership provider and this is my Users table structure:
And in my recent question asked here Oded helped me out trying to figure the problem with my Insert statement and I re-modified it and I have an ApplicationName column in my database structure I need to specify it.(As it should not be null value)
Now I need to add my application name by default to enter to database as we do it for web.config.
This is what I mean.
I need to add that MyApplication to my app.config file.
So How do I do that?
This is how I'm trying to enter user details to database but it is not enetering a single value
Try
Dim connectionString As String = "Data Source=.\sqlexpress;Initial Catalog=HDIMembershipProvider;Integrated Security=True"
Using cn As New SqlConnection(connectionString)
cn.Open()
Dim cmd As New SqlCommand()
cmd.CommandText = "INSERT INTO Users ( Username, Password, Email, PasswordQuestion, PasswordAnswer) VALUES(#Username,#Password,#Email,#PasswordQuestion,#PasswordAnswer)"
Dim param1 As New SqlParameter()
param1.ParameterName = "#Username"
param1.Value = txtUsername.Text.Trim()
cmd.Parameters.Add(param1)
Dim param2 As New SqlParameter()
param2.ParameterName = "#Password"
param2.Value = txtPassword.Text.Trim()
cmd.Parameters.Add(param2)
Dim param3 As New SqlParameter()
param3.ParameterName = "#Email"
param3.Value = txtEmail.Text.Trim()
cmd.Parameters.Add(param3)
Dim param4 As New SqlParameter()
param4.ParameterName = "#PasswordQuestion"
param4.Value = txtSecurityQuestion.Text.Trim()
cmd.Parameters.Add(param4)
Dim param5 As New SqlParameter()
param5.ParameterName = "#PasswordAnswer"
param5.Value = txtSecurityAnswer.Text.Trim()
cmd.Parameters.Add(param5)
cmd.Connection = cn
cmd.ExecuteNonQuery()
cn.Close()
End Using
Successlbl.show
Successlbl.show.Text = "Regisration Success."
Catch
Errolbl.Show()
Errolbl.Text = "Your account was not created.Please try again."
End Try
Can anyone point me out where I'm making mistake.
And this is the final result I'm getting while entering to database:
To be more short and clear I need to enter the above shown User details to my database using the HDI membership provider.

There is a better way by using the following steps:
1) Add a reference to System.Configuration to your application.
2) Add the following block to your app.config file, within the configuration section:
<appSettings>
<add key="ApplicationName" value="/MyApplication" />
</appSettings>
3) Retrieve the value and use it where needed with the following code (example from your answer shown):
param6.Value = System.Configuration.ConfigurationManager.AppSettings("ApplicationName")

Add a AppSettings section to your web.config
<appSettings>
<add key="ApplicationName" value="/website1" />
</appSettings>

I have figured out the problem Myself after a lot of hair pulling and found the solution that I have changed my code in this way:
cmd.CommandText = "INSERT INTO Users ( Username,ApplicationName,Password,
Email, PasswordQuestion, PasswordAnswer) VALUES(#Username,#ApplicationName,#Password,
#Email,#PasswordQuestion,#PasswordAnswer)"
And add another Param this way:
Dim param6 As New SqlParameter()
param6.ParameterName = "#ApplicationName"
param6.Value = txtApplicationName.Text.Trim()
cmd.Parameters.Add(param6)
I know this not the best way If anyone found any other best solution let me know.

Related

Cannot connect to database mvc

I cant connect to database, working on new pc.
Here are params with which i access my sql database :
My connection string in Web.config is :
<connectionStrings>
<add name="DefaultConnection" connectionString="data source=DMITRIJSS-PC\SQLEXPRESS;initial catalog=HRM_MVC_DEV_Test;user id=BTG\DmitrijsS;password=;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
<add name="HRMEntities" connectionString="metadata=res://*/HRMModel.csdl|res://*/HRMModel.ssdl|res://*/HRMModel.msl;provider=System.Data.SqlClient;provider connection string="data source=DMITRIJSS-PC\SQLEXPRESS;initial catalog=HRM_MVC_DEV_Test;user id=BTG\DmitrijsS;password=;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
When I am trying to access db it throws window where I have to write password, when I leave it blank -
Login failed for user BTG\DmitrijsS
<add name="DefaultConnection" connectionString="data source=DMITRIJSS-PC\SQLEXPRESS;initial catalog=HRM_MVC_DEV_Test;Integrated Security=true;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
<add name="HRMEntities" connectionString="metadata=res://*/HRMModel.csdl|res://*/HRMModel.ssdl|res://*/HRMModel.msl;provider=System.Data.SqlClient;provider connection string="data source=DMITRIJSS-PC\SQLEXPRESS;initial catalog=HRM_MVC_DEV_Test;Integrated Security=true;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Set up environment variables.
https://msdn.microsoft.com/en-IN/library/ms365307.aspx

ASP.NET: I am having troubles trying to run a sql script

I have installed Microsoft SQL Server 2014 Express, and I am am learning how to use ASP.NET with Visual Studio Express 2015 for Web to retrieve data from a veterinarian database called vetDatabase_Wizard.
As a beginning, I am retrieving a protocolID from an entered ID and storing the information in a class called clinicalCase. I am 100% new to SQL.
Here is my SQLQuery1.sql script (attempt):
Select * from tblCases
CREATE PROCEDURE spGetCaseByID
#ID int
BEGIN
SELECT caseID, protocolID
FROM tblCases
WHERE caseID = #ID
END
Here is my getCaseByID function calling my SQL script:
[WebMethod]
public clinicalCase getCaseByID(int ID)
{
// Retrieve connection string
string cs = ConfigurationManager.ConnectionStrings["vetDatabase_Wizard"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("spGetCaseByID", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter("#ID", ID);
cmd.Parameters.Add(parameter);
clinicalCase cases = new clinicalCase();
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
cases.ID = Convert.ToInt32(reader["ID"]);
cases.protocolID = Convert.ToInt32(reader["protocolID"]);
}
return cases;
}
}
When I run the function and try it, I get the following error at
SqlDataReader reader = cmd.ExecuteReader();
Could not find the stored procedure "spGetCaseByID".
I suspect it's my SQL syntax or the fact that I added a connection string in my web.config file because I didn't have one:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="vetDatabase_Wizard"
connectionString="Data Source=JOHNATHANBO431E\SQLEXPRESS2014;Initial Catalog=vetDatabase_Wizard;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.6.1"/>
<httpRuntime targetFramework="4.6.1"/>
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"/>
</httpModules>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<remove name="ApplicationInsightsWebTracking"/>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"
preCondition="managedHandler"/>
</modules>
</system.webServer>
</configuration>
I got the name and connectionString from the properties panel of the database.
I would greatly appreciate the community's feedback because I must be missing something obvious! I would like to thank you very much for your time! :)
EDIT: I realized that I need to first execute my SQL script in SQL Server Management Studio before using it in Visual Studio.
However, I get the following error:
SQL80001: Incorrect syntax: 'CREATE PROCEDURE' must be the only statement in the batch. vetApp
Hence, my SQL script is wrong and would appreciate debugging help.
Your code is trying to run a SQL Server stored procedure called spGetCaseByID.
This stored procedure does not exist in your database.
you are trying to run multiple commands in SQL . In order to create stored procedure it should be the first line of code or place go in between the multiple sql command
Select * from tblCases
GO
CREATE PROCEDURE spGetCaseByID
#ID int
**AS**
BEGIN
SELECT caseID, protocolID
FROM tblCases
WHERE caseID = #ID
END
This will help

Connection string error between projects with EF

My solution exits out of 3 Projects:
SP_Class_Library contains my EF model
SP_Control_Library is a class library that contains all my custom and
user controls
SP_EF_TEST is my Form Application
I created a custom control cc_User_DropDown with the following code
Protected Overrides Sub OnCreateControl()
MyBase.OnCreateControl()
LoadUsers()
End Sub
Private Sub LoadUsers()
Dim UserList As List(Of SP_User) = Nothing
UserList = (From c In ent.SP_User
Where c.usr_Active = True
Select c
Order By c.usr_Name).ToList
Dim blank As New SP_User
blank.usr_ID = 0
blank.usr_Name = "Please select a user..."
UserList.Insert(0, blank)
Me.DisplayMember = "usr_Name"
Me.ValueMember = "usr_ID"
Me.DataSource = UserList
End Sub
The problem comes when I try and add the custom control to either u_Users or Form1 I get the error:
If I comment the code and build I can add the control, but as soon as I uncomment the code and build I get the following:
I have tried suggestions that say I must add the app.config to all the projects, Copy the connectionstring to all the .config files and remove the .config file from the dll and add it to the Form Application but it does not work.
Here is my app.config file:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<system.diagnostics>
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog" />
<!-- Uncomment the below section to write to the Application Event Log -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter" />
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<connectionStrings>
<add name="SPEntities" connectionString="metadata=res://*/SP_Model1.csdl|res://*/SP_Model1.ssdl|res://*/SP_Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=localhost\SPDEV;initial catalog=SP;persist security info=True;user id=sa;password=xxx;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v12.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>

Web.config jsonSerialization maxJsonLength ignored

I have an MVC3 application running under .NET 4.0 and when I use JavascriptSerializer.Deserialize I'm getting an error.
Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.
Reading Can I set an unlimited length for maxJsonLength in web.config I put the jsonSerialization maxJsonLength key in my web.config but it gets ignored. Though I can set the JavaScriptSerializer.MaxJsonLength property in code and it works fine.
I would like to have the value in the Web.config rather than code. Here is how I am using JavaScriptSerializer.
Dim client As New WebClient
...
Dim result = _client.DownloadString("Test")
Dim serializer = New JavaScriptSerializer
Return serializer.Deserialize(Of Foo)(result)
Here is my Web.config
<configuration>
<configSections>
...
</configSections>
<appSettings>
...
</appSettings>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/Http404"/>
<error statusCode="403" redirect="/Http403"/>
<error statusCode="550" redirect="/Http550"/>
</customErrors>
<compilation debug="true" targetFramework="4.0"/>
<pages controlRenderingCompatibilityVersion="4.0">
<namespaces>
<add namespace="System.Web.Helpers"/>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
</namespaces>
</pages>
</system.web>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
<system.webServer>
....
</system.webServer>
</configuration>
According to the link you provided (the 2nd most voted answer), your web.config setting will be ignored because you're using an internal instance of the JavaScriptSerializer.
If you need the value to be stored in the web.config, you could add a key in the <appSettings> section called maxJsonLength with a value of 50000000 and then in your code, you could use it like:
var serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = ConfigurationManager.AppSettings['maxJsonLength'];

How do I comment out existing database connections & then create a new database connection in the web.config using vb.net?

Basically I have a web.config file that has several database connections in it in both the "connectionStrings" & "appSettings" sections. See example below.
<connectionStrings>
<!-- Connection String for SQL Server 2005 Express -->
<add
name="SiteSqlServer"
connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Database.mdf;"
providerName="System.Data.SqlClient" />
<!-- Connection String for SQL Server 2000/2005
<add
name="SiteSqlServer"
connectionString="Server=(local);Database=DotNetNuke;uid=;pwd=;"
providerName="System.Data.SqlClient" /> -->
</connectionStrings>
<appSettings>
<!-- Connection String for SQL Server 2005 Express - kept for backwards compatability - legacy modules -->
<add key="SiteSqlServer" value="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Database.mdf;"/>
<!-- Connection String for SQL Server 2000/2005 - kept for backwards compatability - legacy modules
<add key="SiteSqlServer" value="Server=(local);Database=DotNetNuke;uid=;pwd=;"/>
-->
<add key="InstallTemplate" value="DotNetNuke.install.config" />
<add key="AutoUpgrade" value="true" />
<add key="UseInstallWizard" value="true"/>
<add key="InstallMemberRole" value="true" />
<add key="ShowMissingKeys" value="false" />
<add key="EnableWebFarmSupport" value="false" />
<add key="EnableCachePersistence" value="false"/>
<add key="HostHeader" value="" />
<!-- Host Header to remove from URL so "www.mydomain.com/johndoe/Default.aspx" is treated as "www.mydomain.com/Default.aspx" -->
<add key="RemoveAngleBrackets" value="false" />
<!--optionally strip angle brackets on public login and registration screens-->
<add key="PersistentCookieTimeout" value="0" />
<!--use as persistent cookie expiration. Value is in minutes, and only active if a non-zero figure-->
<!-- set UsePortNumber to true to preserve the port number if you're using a port number other than 80 (the standard)
<add key="UsePortNumber" value="true" /> -->
</appSettings>
What I need to do is loop through each of the connections strings, comment them out & then add my new connection strings to both sections of the web.config file.
This is what I have so far - creating the new connection string is working but I am unsure how to loop through comment out any orig connection strings.
Dim Name As String = "SiteSqlServer"
Dim isNew As Boolean = False
Dim MyWebConfigPath As String = "C:\test\Web.Config"
Dim MyWebConfigFile As New XmlDocument()
MyWebConfigFile.Load(MyWebConfigPath)
Dim list As XmlNodeList = MyWebConfigFile.DocumentElement.SelectNodes(String.Format("connectionStrings/add[#name='{0}']", Name))
Dim node As XmlNode
isNew = list.Count = 0
If isNew = False Then
'Comment out existing connection settings
End If
node = MyWebConfigFile.CreateNode(XmlNodeType.Element, "add", Nothing)
Dim attribute As XmlAttribute = MyWebConfigFile.CreateAttribute("name")
attribute.Value = Name
node.Attributes.Append(attribute)
attribute = MyWebConfigFile.CreateAttribute("connectionString")
attribute.Value = "Data Source=CP5-1234\SQLEXPRESS;Initial Catalog=demo_db;User ID=demo_dbusr;Password=MyPass#1234"
node.Attributes.Append(attribute)
attribute = MyWebConfigFile.CreateAttribute("providerName")
attribute.Value = "System.Data.SqlClient"
node.Attributes.Append(attribute)
MyWebConfigFile.DocumentElement.SelectNodes("connectionStrings")(0).AppendChild(node)
MyWebConfigFile.Save(MyWebConfigPath)
This is what I would like to end up with:
<connectionStrings>
<!-- Connection String for SQL Server 2005 Express -->
<!-- REMOVED BY ME ON 6/6/2012
<add
name="SiteSqlServer"
connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Database.mdf;"
providerName="System.Data.SqlClient" /> -->
<!-- Connection String for SQL Server 2000/2005
<add
name="SiteSqlServer"
connectionString="Server=(local);Database=DotNetNuke;uid=;pwd=;"
providerName="System.Data.SqlClient" /> -->
<add name="SiteSqlServer" connectionString="Data Source=CP5-1234\SQLEXPRESS;Initial Catalog=demo_db;User ID=demo_dbusr;Password=MyPass#1234" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<!-- Connection String for SQL Server 2005 Express - kept for backwards compatability - legacy modules -->
<!-- REMOVED BY ME ON 6/6/2012
<add key="SiteSqlServer" value="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Database.mdf;"/> -->
<!-- Connection String for SQL Server 2000/2005 - kept for backwards compatability - legacy modules
<add key="SiteSqlServer" value="Server=(local);Database=DotNetNuke;uid=;pwd=;"/> -->
<add name="SiteSqlServer" connectionString="Data Source=CP5-1234\SQLEXPRESS;Initial Catalog=demo_db;User ID=demo_dbusr;Password=MyPass#1234" providerName="System.Data.SqlClient" />
<add key="InstallTemplate" value="DotNetNuke.install.config" />
<add key="AutoUpgrade" value="true" />
<add key="UseInstallWizard" value="true"/>
<add key="InstallMemberRole" value="true" />
<add key="ShowMissingKeys" value="false" />
<add key="EnableWebFarmSupport" value="false" />
<add key="EnableCachePersistence" value="false"/>
<add key="HostHeader" value="" />
<!-- Host Header to remove from URL so "www.mydomain.com/johndoe/Default.aspx" is treated as "www.mydomain.com/Default.aspx" -->
<add key="RemoveAngleBrackets" value="false" />
<!--optionally strip angle brackets on public login and registration screens-->
<add key="PersistentCookieTimeout" value="0" />
<!--use as persistent cookie expiration. Value is in minutes, and only active if a non-zero figure-->
<!-- set UsePortNumber to true to preserve the port number if you're using a port number other than 80 (the standard)
<add key="UsePortNumber" value="true" /> -->
</appSettings>