2013-12-14 4 views
0

я очень странная проблема, что заставило меня застрял в моем проекте .. я использую C# (SharpDevelop 4.3.3 сборки 9663) ..ошибка при app.config в SharpDevelop для ConnectionString

  • Когда я использую строка подключения из app.config i получить ошибку при попытке открыть соединение:

c.Open();

< app.config ================ файл

<?xml version="1.0"?> 
<configuration> 


<connectionStrings> 

    <add name="databasecon" connectionString="Data Source=ahmed\\sqlexpress;Initial Catalog=abumanahilms;Integrated Security=True" /> 

</connectionStrings> 

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> 

Button1 коды .. в этом < =========== ===== form1

void Button1Click(object sender, EventArgs e) 
    { 

     string cs=ConfigurationManager.ConnectionStrings["cs"].ToString(); 


     SqlConnection c = new SqlConnection(cs); 


     SqlCommand sc = new SqlCommand("insert into table1 (money) VALUES ('"+textBox1.Text+"')",c); 

     SqlDataReader sr; 
     c.Open(); 

     sr = sc.ExecuteReader(); 


     MessageBox.Show("success"); 



    } 

но когда я поставил прямой строки < ================ Form1

string cs="Data Source=ahmed\\sqlexpress;Initial Catalog=test;Integrated Security=True"; 

он прекрасно работает ...

Ошибка, которую я получаю ------------------------------------------ -------------------------------

System.InvalidOperationException: Instance failure. 
    at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) 
    at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) 
    at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) 
    at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) 
    at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions) 
    at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) 
    at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) 
    at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnectionOptions userOptions) 
    at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnectionOptions userOptions) 
    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) 
    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) 
    at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) 
    at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) 
    at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) 
    at System.Data.SqlClient.SqlConnection.Open() 
    at teeest.MainForm.Button1Click(Object sender, EventArgs e) in c:\Users\Ahmed Albusaidi\Documents\SharpDevelop Projects\teeest\teeest\MainForm.cs:line 59 
    at System.Windows.Forms.Control.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
    at System.Windows.Forms.Button.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 
    at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) 
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
    at System.Windows.Forms.Application.Run(Form mainForm) 
    at teeest.Program.Main(String[] args) in c:\Users\Ahmed Albusaidi\Documents\SharpDevelop Projects\teeest\teeest\Program.cs:line 27 

2) Я также попытался взять connectionstring из текстового файла

string cs= File.ReadAllText("connectionstring.txt").ToString(); 

также:

string cs= File.ReadAllText("connectionstring.txt"); 

я получить точно такую ​​же ошибку :)

Я надеюсь получить помощь .. Спасибо заранее :)

+0

Если вы публикуете фактическую ошибку, и какая строка вызывает ее, которая поможет вам помочь. –

+0

я упомянул все возможное .. ошибки только в одной ситуации .. и когда появляется ошибка, она указывает на c.Open(); строка кода .. как упоминалось выше .. спасибо за вашу озабоченность .. –

+0

не должна эта строка 'string cs = ConfigurationManager.ConnectionStrings [" cs "]. ToString();' be 'string cs = ConfigurationManager.ConnectionStrings [ databasecon "] ToString();.'? – har07

ответ

0

Проблема заключается в том, что вы используете \\ в вашем app.config. У вас должна быть единственная обратная косая черта в app.config. Нет необходимости кодировать строку в app.config. Вам нужно только сделать это в коде C#. Изменение источника данных, чтобы быть Ahmed \ SQLEXPRESS только с одной обратной косой черты:

<connectionStrings> 
    <add name="databasecon" connectionString="Data Source=ahmed\sqlexpress;Initial Catalog=abumanahilms;Integrated Security=True" /> 
</connectionStrings> 

Еще одна проблема с вашим кодом, что app.config имеет строку соединения с именем «databasecon», но ваш код использует «сп». Однако ConfigurationManager.ConnectionStrings ["cs"] вернет нулевую ссылку, если строка соединения «cn» отсутствует, поэтому я подозреваю, что ваш код и app.config отличаются от того, что вы опубликовали в своем вопросе.

+0

Я попробую и подведу вас обратно :) –

+0

совершенный ... простой мужчина .. просто так .. я действительно ценю это :) –

+0

Matt Ward ... Не могли бы вы накормить меня некоторыми советами. У вас есть идея, как я пишу свои программы .. это хорошо или у вас есть советы для меня? –

Смежные вопросы