---------------------- android培训、java培训、期待与您交流! ----------------------
一、连接SQLsever
1.连接字符串:程序通过连接字符串指定要连哪台服务器上的,包括哪个实例的哪个数据库、用什么用户名和密码等。
2.项目内嵌mdf文件形式的连接字符串“"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;UserInstance=True”。
其中“.\SQLEXPRESS”表示本机上的“SQLEXPRESS实例”,如果数据库名不是SQLEXPRESS,则需修改。“Database1.mdf”为mdf的文件名。
3.ADO.Net中通过SqlConnection类创建到SQLsever的连接。SqlConnection代表一个数据库连接,ADO.Net中的连接等资源都实现了IDisposable接口,可以使用using进行资源管理,执行备注中的代码如果成功OK。
using (SqlConnectionconn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\T_Database1.mdf;IntegratedSecurity=True;User Instance=True")) //连接数据库
{
conn.Open(); //使用范围是{ }中
} //使用完自动释放
二、执行简单的SQL
1.SqlCommand表示向服务器提交的一个命令(SQL语句等),是一个类。
1)这个类的CommandText属性为要执行的SQl语句;
2)这个类的ExecuteNonQuery方法执行一个非查询语句(如:Update Insert Delete等),并返回影响的行数。
例
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "insert into T_phone (username,password) values ('admin','888888')";
cmd.ExecuteNonQuery();
}
2. ExecuteReader方法是执行查询语句,它返回一个SqlDataReader类型的类。
1)这个类的Read()方法可以看成是一个指针,单向由上到下查找满足条件的数据,查找到数据后指针就停在该数据上方,返回值为true,当指针移动到最后,下面没有数据了,返回值为false。
2)这个类的GetString和GetInt32等方法,只接受整数参数,即序号(用GetOrdinal方法根据列名动态得到序号)得到该位置的数据。
如:string cityname =reader.GetString(reader.GetOrdinal("cityname"))
意思是得到查找到的那行,cityname 那列的数据。
三、VS中用SQL时需要插入变量的解决方法
1.字符串拼接法
cmd.CommandText = "select cityname from city where proid="+idx;
2.参数化查询
cmd.CommandText = "select cityname from city where proid=@idx";
cmd.Parameters.Add(new SqlParameter("idx", idx));
注:第一种方法,字符串拼接法,有注入式漏洞,第二种方法更安全,所以,一般情况下用第二种方法,可以避免漏洞。
---------------------- android培训、java培训、期待与您交流! ----------------------