Подключение к SQL Server напрямую из приложения - ужасная практика, и вместо этого им следует управлять с помощью веб-службы, поскольку очень легко декодировать двоичные файлы APK или IPA. Затем пользователь может просто уничтожить вашу базу данных SQL. Вот почему вы не найдете учебных пособий о том, как это сделать.
При этом, когда вы начинаете захват изображения, ваш код будет выглядеть примерно так: StartActivityForResult(intent, save_request_code);
А затемВы должны переопределить функцию OnActivityResult
, которая вызывается после того, как снимок сделан (или выбран из галереи). Если действие было успешным, мы создаем байтовый массив и передаем его в SQL
private const int save_request_code = 7; // You can use any integer
// "protected override void OnActivityResult(int requestCode, int resultCode, Intent data)" depending on your Android support library version
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
switch (requestCode)
{
case save_request_code:
switch ((Result)resultCode) // (Result) conversion not needed if it is already a Result object above
{
case Result.Canceled:
break;
case Result.FirstUser:
break;
case Result.Ok:
{
try
{
Bitmap bitmap = MediaStore.Images.Media.GetBitmap(this.ContentResolver, data.Data);
using (MemoryStream stream = new MemoryStream())
{
bitmap.Compress(Bitmap.CompressFormat.Jpeg,100, stream);
byte[] array=stream.ToArray();
SqlConnection CN = new SqlConnection(txtConnectionString.Text);
string qry = "insert into ImagesStore(OriginalPath,ImageData) values(@OriginalPath, @ImageData)";
SqlCommand SqlCom = new SqlCommand(qry, CN);
SqlCom.Parameters.Add(new SqlParameter("@OriginalPath", (object)txtImagePath.Text));
SqlCom.Parameters.Add(new SqlParameter("@ImageData", (object)imageData));
CN.Open();
SqlCom.ExecuteNonQuery();
CN.Close();
}
}
catch (Exception ex)
{
System.Console.WriteLine (ex.Message)
}
}
default:
throw new ArgumentOutOfRangeException("resultCode");
}
break;
}
}
Также кажется, что вы не дали приложению разрешение на чтение данных телефона, поэтому вы делаете это, добавляя этов файл манифеста:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Опять же, пожалуйста, не запускайте этот код в производство без использования веб-службы.