在窗口应用程序中,我正在尝试使用数据库,如何在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
,即使我通过了正确的凭据
答案 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();