try {
SqlConnection sql = new SqlConnection(
@"data source=localhost;" +
"user id=sa;password=pAs$w0rd;");
sql.Open();
string sqlstring="SELECT ccnum" +
" FROM cust WHERE id=" + Id;
SqlCommand cmd = new SqlCommand(sqlstring,sql);
try {
ccnum = (string)cmd.ExecuteScalar();
} catch (SqlException se) {
Status = sqlstring + " failed\n\r";
foreach (SqlError e in se.Errors) {
Status += e.Message + "\n\r";
}
} catch (SqlException e) {
// Ой!
}
Ниже приведен по существу такой же код, но SQL–предложение строится с помощью замены подстроки, а не конкатенации. Это тоже ошибка.
using System.Data;
using System.Data.SqlClient;
...
string ccnum = "None";
try {
SqlConnection sql = new SqlConnection(
@"data source=localhost;" +
"user id=sa;password=pAs$w0rd;");
sql.Open();
string sqlstring="SELECT ccnum" +
" FROM cust WHERE id=%ID%";
String sqlstring2 = sqlstring.Replace("%ID", id);
SqlCommand cmd = new SqlCommand(sqlstring2,sql);
try {
ccnum = (string)cmd.ExecuteScalar();
} catch (SqlException se) {
Status = sqlstring + " failed\n\r";
foreach (SqlError e in se.Errors) {
Status += e.Message + "\n\r";
}
} catch (SqlException e) {
// Ой!
}
Греховность PHP
Вот та же классическая ошибка, но в программе на языке РНР, часто применяемом для доступа к базам данных.
<?php
$db = mysql_connect("localhost","root","$$sshhh...!");
mysql_select_db("Shipping",$db);
$id = $HTTP_GET_VARS["id"];
$qry = "SELECT ccnum FROM cust WHERE id = %$id%";
$result = mysql_query($qry,$db);