|
本帖最后由 秋日的枫叶 于 2013-6-8 13:03 编辑
在写软件的时候
需要写到一个方法,该方法通过我传递的一个string字符串到数据库表bst_System_Place中进行匹配字段cnPlaceName,取得该表中另一个字段PID的值
我写的方法如下:- [code=csharp] //匹配所在城市
- public int GetCiyt (string city)
- {
- string strarea = city.Substring(city.Length-2);
- SqlConnection conn = new SqlConnection(connstr);
- conn.Open(); //打开数据库
- SqlCommand cmd = conn.CreateCommand();
- cmd.CommandText = "SELECT * FROM bst_System_Place WHERE cnPlaceName LIKE '@city'";
- cmd.Parameters .AddWithValue ("@city",strarea);
- SqlDataReader reader = cmd.ExecuteReader();
- if (reader.HasRows)
- {
- int x = (int)reader["PID"];
- return x;
- }
- else
- {
- int y = 1148;
- return y;
- }
- reader.Dispose();
- cmd.Dispose();
- conn.Dispose();
- //switch (strarea)
- //{
- // case "江苏":
- // return 1006;
- // //break;
- // case "天津":
- // return 1003;
- // break;
- //}
- }
复制代码 [/code]问题1:
由于方法GetCity在程序中需要循环的执行,这就意味着我要频繁的打开数据库关闭数据库,这样执行效率非常低,而且也不稳定。
请问有什么办法解决吗?
我自己想到的办法是通过设置全局变量二维数组int[x,y]
在程序中一次读出数据库中这2字段内容,并存放到二维数组int[x,y]中
然后在方法中直接进行和二维数组进行对比。不过总觉得这个满复杂的,还有其他简单办法?
还有解决办法我在代码中注释掉了,就是因为有400过个城市,每个城市都用switch判断,要把我敲死了哈哈。。。
问题2:
上面方法中的 cmd.Parameters .AddWithValue ("@city",strarea);这个代码我如果写成
cmd.Parameters .AddWithValue (city,strarea);用什么不同吗?
|
|