PDA

View Full Version : سوال: مشکل نرم افزارهام با اتصال به بانک اطلاعاتی در سیستم های مختلف



hercool
پنج شنبه 16 آبان 1392, 12:11 عصر
سلام دوستان
من یه سوال دارم
من برنامه های که می نویسم و به فایل .exe تبدیلشون می کنم با بانک sql کار می کنن
و مشکل اینجاست که
وقتی برنامه را در سیستم های دیگه چه مجازی چه سیستم هایی که می تونم بهشون دسترسی داشته باشم(مثلا کامپیوتر های دانشگاه) نصب می کنم یا نمی تونه به دیتابیس دسترسی داشته باشه یعنی (وصل بشه به سرور اون سیستم )
یا اینکه وقتی وصل میشه نمی تونه اطلاعاتی را توش بنویسه (می تونه بخونه ولی نمی تونه بنویسه)
ممنون میشم در این زمینه راهنماییم کنید که شما دوستان چه کار های برای نرم افزارتون می کنید تا به این مشکل بر نمی خورید

mehran6764
پنج شنبه 16 آبان 1392, 12:32 عصر
سلام

شما بايد كانكشن استرينق برنامه اتونو بصورت پويا داخل برنامه بنويسيد كه از پوشه جاري داخل برنامه ديتابيس ها رو بخونه تا در صورت تغيير مسير مشكلي پيش نياد مثلا شما ممكنه برنامه رو از داخل داريو C اجرا كنيد اما يكي ديگه از داخل درايو D
دو مورد ديگه دردسر ساز هستند : وقتي عمليات قبلي روي كه ديتابيس انجام شده شما كامل نمي بندين و شروع مي كنين به عمليات دوم (( آزاد سازي ))

و اينكه تو بعضي از نسخه هاي سيستم عامل ها كلاس ها و دستوراتي كه استفاده مي كنيد ممكنه پشتيباني نشن

hercool
پنج شنبه 16 آبان 1392, 18:58 عصر
یه مسئله ای که وجود داره تو استرینگ برنامه نیاز هست که بگیم سرور نامش چی هست و تو بعضی از سیستم ها . یا local کار نمی کنه و این مشکل ساز میشه

hercool
جمعه 17 آبان 1392, 09:31 صبح
من اومدم کاری کنم که لیست سرور های سیستم رو بگیره بازم مشکلی که دارم اینه که برنامه تو سیستم من کار می کنه ولی در مجازی ها اینطور نیست (کد ها را به صورت نصبی در اوردم و در ویندوز مجازی تستش کردم ارور میده )
خطای 0x80040154 را می گیرم که مربوط به کامپوننت +com هست که برای رفعش اقدام کردم با کمک تاپیک های زیر اما به جواب نرسیدم

http://support.microsoft.com/kb/910337

http://support.microsoft.com/kb/315296
کد برنامم هم اینه
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
namespace getlistofserver
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnRetrieve_Click(object sender, EventArgs e)
{
SQLDMO.NameList sqlList = null;

SQLDMO.Application sqlApp = null;



lstServers.Items.Clear();



try
{

sqlApp = new SQLDMO.Application();

sqlList = sqlApp.ListAvailableSQLServers();



for (int ctr = 1; ctr <= sqlList.Count; ctr++)
{

lstServers.Items.Add(sqlList.Item(ctr));

}

}

catch (Exception ex)
{

MessageBox.Show(ex.Message);

}

finally
{

if (sqlList != null)

sqlList = null;



if (sqlApp != null)

sqlApp = null;

}
}
}
}


ممنون میشم راهنماییم کنید چطور می تونم لیست سرور ها رو بگیرم با کمترین دردسر

hercool
سه شنبه 21 آبان 1392, 20:42 عصر
من یک پروژه ساده میزارم هر کاری کردم نشد لینکی که fastcode گذاشته بود رو امتحان کردم بازم جوابی نگرفتم با تغییر استرینگ
این لینکی که در یک تاپیک گذاشته بودن

http://www.connectionstrings.com/sql-server/
این کد برنامه که ساده هست فقط می خواد نام و فامیلی رو ذخیره کنه
namespace testsavedata
{
public partial class Form1 : Form
{
string s;
SqlConnection con;
public Form1()
{
InitializeComponent();

}

private void save_Click(object sender, EventArgs e)
{
con = new SqlConnection("Server="+ server.Text + ";Database=basetest;Integrated Security=True");
savedata("savename");

}
public void savedata(string s)
{
SqlCommand command = null;
SqlDataAdapter adapter=null;
try
{
adapter = new SqlDataAdapter();
command = new SqlCommand(s);
command.Connection = con;
con.Close();
command.Connection.Open();
command.CommandType = CommandType.StoredProcedure;
adapter.SelectCommand = command;
command.Parameters.Clear();
command.Parameters.Add(new SqlParameter("@name",name.Text));
command.Parameters.Add(new SqlParameter("@family",family.Text));
command.Connection.Close(); }
finally { if (adapter != null)adapter.Dispose(); if (command != null)command.Dispose(); }

}
}
}

اینم فایل نصبی و برنامه
http://uplod.ir/n1imdzy2b2hn/savedatasetup.rar.htm

hercool
سه شنبه 21 آبان 1392, 20:43 عصر
این کانکشن و بقیه رو هم دادم با نوع های مختلف ولی نشده حتی برای این برنامه کوچیک
con = new SqlConnection("Server=" + server.Text + ";Database=basetest;Trusted_Connection=True;");