2012-04-19 62 views
2

我正在学习使用visual studio 2010的基本c#,并且正在创建使用SQL Server数据库的应用程序。 该应用程序将允许用户在文本框中输入文本到一个富文本框中,按一个按钮,然后在文本框2中显示“存储”的单词。这些存储的单词只是带*的单词。 我有我的数据库文件,但我无法弄清楚如何为它做代码。到目前为止,我有,使用SQL Server数据库文件

SqlConnection myConn = new SqlConnection(@"Server=.\SQLEXPRESS;AttachDbFilename='C:\datafile.mdf';Integrated Security=True;User Instance=True"); 
con.Open(); 
SqlCommand com = new SqlCommand("SELECT name FROM bbc", con); 
SqlDataReader sdr = com.ExecuteReader(); 
while (sdr.Read()) 
{ 
    this.txtbox2.Text.Add(sdr[""]); 
} 

这是在我的按钮处理程序。

我有我的数据文件设置,以便它是真的如何设置它从文本框1中获取数据,并显示在文本框中2

+0

请注意,您正在连接到连接字符串中的主数据库。您应该连接到包含bbc表的数据库,或者将完整的模式信息放入SQL查询中。 – duraz0rz 2012-04-19 18:23:37

+0

对不起,我粘贴从我的旧代码,请参阅更新 – user1300788 2012-04-19 18:26:51

回答

0

我会用这样的:

//SQL Connection stuff here 
con.Open(); 
String queryStr = "SELECT name FROM bbc WHERE name LIKE '*%'"; 
SqlCommand com = new SqlCommand(queryStr, con); 
SqlDataReader sdr = com.ExecuteReader(); 

while(sdr.Read()) 
{ 
    this.textbox2.Text = sdr.GetValue(0).ToString(); 
} 

它更简单,通常更高效,让SQL限制查询结果。

+0

我似乎得到此错误:在System.Data.dll中发生未处理的类型'System.Data.SqlClient.SqlException异常' 其他信息:An试图为文件C:\ datafile.mdf附加一个自动命名的数据库失败。具有相同名称的数据库存在,或指定的文件无法打开,或位于UNC共享上。 – user1300788 2012-04-19 18:18:43

0

可能是这样的刚刚情况:

StringBuilder builder = new StringBuilder(); 
while (sdr.Read()) 
{ 
    string value = sdr["name"].ToString(); 
    if(value.Contains("*")) 
     builder.Append(value); 
} 

this.txtbox2.Text = builder.ToString(); 
0

如果你只希望显示与“*”开头的话 - 那么你可以限制你的数据库查询只返回他们:

SELECT name FROM bbc where name like '*%' 

的“%”字符是一个通配符 - 这意味着只返回结果ST用'*'进行创作并以任何结束。

0

也许以下几点:

while (sdr.Read()) 
{ 
    string value = sdr["name"].ToString(); 
    if(value.StartsWith("*")) 
     txtbox2.Text += value; 
} 

有几点:

  • 把周围的SqlConnection一个使用因此它会自动关闭它。
  • 我注意到你正试图连接到主数据库。为什么?
  • Dave对使用通配符%限制结果很有帮助。
相关问题