C#Window应用程序中的连接字符串

时间:2013-09-23 04:18:25

标签: c# sql-server wpf winforms

在窗口应用程序中,我正在尝试使用数据库,如何在app.config中编写连接字符串。以下是app.config中的连接字符串

<configuration>
 <appSettings >
  <add key ="mycon" 
      value ="server=192*****;database=*****;
      uid=**;pwd=*****;"/>
</appSettings>
</configuration>

连接数据库的代码:

  SqlConnection con = new SqlConnection(
   ConfigurationSettings.AppSettings["mycon"].ToString()); con.Open(); 
  SqlCommand cmd = new SqlCommand("Usp_chat_login", con);
  cmd.CommandType = CommandType.StoredProcedure ;
  cmd.Parameters.Add("@userid", SqlDbType.VarChar, 20);
   cmd.Parameters["@userid"].Value = textBox1.Text;
  cmd.Parameters.Add("@password", SqlDbType.VarChar, 20);
  cmd.Parameters["@password"].Value = textBox2.Text;
  int reslt =  cmd.ExecuteNonQuery();  con.Close();
  if (reslt > 0)
    {
       MessageBox.Show("Yes");
    } 
  else
     {
          MessageBox.Show("No");

     }

每次我获得reslt=-1,即使我通过了正确的凭据

2 个答案:

答案 0 :(得分:1)

  

每次我得到reslt = -1,即使我传递了正确的凭据

这与凭据无关,也与配置文件无关。如果对数据库的身份验证/授权失败,则会抛出异常。

问题可能发生在Usp_chat_login程序中。

请参阅ExecuteNonQuery()的{​​{3}}:

  

对于UPDATE,INSERT和DELETE语句,返回值为   受命令影响的行数。当a上存在触发器时   正在插入或更新的表,返回值包括数字   受插入或更新操作影响的行数和数字   受触发器或触发器影响的行数。对于所有其他类型的   语句,返回值为-1。如果发生回滚,则返回   值也是-1。

其他说明:

  • 应该处理实现IDisposable的类型,尤其是与非托管资源(例如数据库连接)交互的类型。一种简单的方法是将这些类型的实例包装在documentation中。

  • 任何应用程序中,纯文本密码被视为不安全/不负责任。

答案 1 :(得分:-1)

将其写入App.XAML

 public partial class App : Application
{
    public App()
    {
        string connectionStr = "Data Source=system\\SQLExpress;Initial Catalog=DBName; user id=sa; password=test123;";
        Application.Current.Properties["conStr"] = connectionStr;
    }
}

并以主窗体

访问它
static string strCon = Application.Current.Properties["conStr"].ToString();