2017-10-06 75 views
1

我有一个数据库(用户名(密钥),全名,通行证),我想搜索用户名并在控制台中写出该用户名的全名。 我有这些:C#SQL从表中选择一个数据

static DataTable dt = new DataTable(); 
static SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=""path\login.mdf"";Integrated Security=True"); 

con.Open(); 
string username="mate"; 
    SqlDataAdapter sda = new SqlDataAdapter("SELECT Nev FROM Login WHERE username='" + username+ "'", con); 
     sda.Fill(dt); 
     string fullname; 
     if (dt.Rows[0][0].ToString() == "1")then? 

“内华达州”是指全名

我希望它的全名写为“全名”的字符串,然后只是:

Console.Writeline("Welcome {0}",fullname); 

你能帮助我用这个代码?
我只是不知道如何继续我的代码。用户可以登录并注册到应用程序,当他们登录时,我想在他们注册用户名时填入“Hello FullName”,他们将存储全名和密码,并且用户名为& pass。我只是不知道如何找到全名,如果我知道用户名。 (我在SQL初学者)

+0

您似乎没有打开连接。 – chaosifier

+0

刚刚错过了一条线,有一个con.open @chaosifier – Skickpause

+0

你的问题是什么?你有什么具体问题?这应该在问题的主体中。 https://stackoverflow.com/help/how-to-ask – jdv

回答

2

我觉得这就是你追求:

string fullname = null; 
using(var con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=""path\login.mdf"";Integrated Security=True")) { 
    string username = "mate"; 
    SqlCommand cmd = new SqlCommand("SELECT Nev FROM Login WHERE [email protected]", con); 
    cmd.Parameters.AddWithValue("@Username", username); 

    con.open(); 
    fullname = cmd.ExecuteScalar()?.ToString(); 
} 

if (fullname == null) { 
    Console.WriteLine("The username could not be found!"); 
} 

using确保连接清洗ü p一旦该块被退出。另外,你应该使用Parameters来更有弹性的SQL注入。

+0

System.TypeInitializationException未处理 消息:mscorlib.dll中发生类型'System.TypeInitializationException'的未处理异常 - 应用程序进入中断模式“ – Skickpause

+0

您确定自己的连接字符串(”Data Source =(LocalDB)...“是否正确? – njenson

+0

现在是这样,但仍然是“\t 对象引用未设置为任何对象实例。” – Skickpause

0

为了您的具体问题,请尝试以下代码:

if(dt.Rows.Count > 0) 
     fullname = dt.Rows[0]["Nev"].ToString(); 

但这里有一个更好的,完整的解决问题的方法:

string userName = "mate"; 
string fullName = string.Empty; 

string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=path\login.mdf;Initial Catalog=Login;Integrated Security=True"; 
string query = "SELECT Nev FROM Login WHERE [email protected];"; 

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    SqlCommand command = new SqlCommand(query, connection); 
    command.Parameters.Add("@UserName", SqlDbType.NVarChar); 
    command.Parameters["@UserName"].Value = userName; 

    try 
    { 
     connection.Open(); 
     fullName = command.ExecuteScalar().ToString(); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 

Console.WriteLine("Hello {0}!", fullName); 
+0

对象引用未设置为任何对象实例。 “你好 !' – Skickpause

+0

你使用了什么连接字符串?似乎你使用了一个不正确的连接字符串 – chaosifier

+0

不,这不可能是错误的,我检查了一千次 – Skickpause